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

3 ответа3

1

Я не думаю, что 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 {}

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

1

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .