Использование xargs с командами mv и mkdir в Linux

Я пытаюсь создать каталог с помощью команды mkdir, Тем не менее, я хотел бы переместить подмножество файлов в этот каталог. Я понимаю, что могу использовать xargs, однако мои попытки не увенчались успехом. Например, я пытался mkdir test | xargs -i mv test.text {}, Создает каталог, но не перемещает файл test.txt в это после того, как он был создан.

3 ответа

Решение

mkdir ничего не выводит, поэтому xargs не буду делать ничего полезного. Я не совсем понимаю, что вы хотите сделать, поэтому вы должны объяснить свой вопрос лучше.

"хотел бы переместить подмножество файлов в этот каталог" -> имеют ли файлы в этом подмножестве одну или несколько черт? Если да, используйте команду find следующим образом:

find [conditions] -exec mv "{}" dirname \;

Если вы хотите не вводить имя каталога дважды или если вы делаете это из скрипта, вы можете сделать что-то вроде

dirname=test
mkdir $dirname && mv filename $dirname

Мое предположение, близко к ответу пользователя 49740:

mkdir test && find -type f -name 'test.*' -exec mv {} test \;

сколько разных каталогов вы хотите создать?

Я не думаю, что mkdir выдаст какой-либо вывод в pipe к xargs.

Выполнение "mkdir test1 test2 testhello3 | grep hello" не дает никакого вывода, тогда как выполнение "ls | grep hello" покажет мне "testhello3".

Можете ли вы сначала создать папки, а затем использовать ls, затем grep, а затем xargs?

ls | grep (unique search to get folder name) | xargs -i mv test.txt {}

Может быть, было бы полезно больше информации о критериях перемещения файлов и тому подобное.

Другие вопросы по тегам