Я пытаюсь создать каталог с помощью команды mkdir
. Тем не менее, я хотел бы переместить подмножество файлов в этот каталог. Я понимаю, что могу использовать xargs, но мои попытки провалились. Например, я попробовал mkdir test | xargs -i mv test.text {}
. Он создает каталог, но не перемещает в него файл test.txt
после того, как он был создан.
3 ответа
Я не думаю, что 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 {}
Возможно, будет полезна дополнительная информация о критериях перемещения файлов.
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 \;
Сколько разных каталогов вы хотите создать?