Использование 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 {}
Может быть, было бы полезно больше информации о критериях перемещения файлов и тому подобное.