Вы можете сделать что-то вроде ниже.
find path_A -name "*AAA*" -print0 | xargs -0 -I {} mv {} path_B
Где,
-0
Если есть пробелы или символы (включая символы новой строки), многие команды не будут работать. Эта опция заботится об именах файлов с пустым пространством.
-I
Заменить вхождения replace-str в исходных аргументах именами, считанными из стандартного ввода. Кроме того, пробелы без кавычек не заканчивают элементы ввода; вместо этого разделителем является символ перевода строки.
тестирование
Я создал две директории как sourcedir
и destdir
. Теперь, я создал кучу файлов внутри , sourcedir
как file1.bak
, file2.bak
иfile3 with spaces.bak
Теперь я выполнил команду как,
find . -name "*.bak" -print0 | xargs -0 -I {} mv {} /destdir/
Теперь, внутри destdir
, когда я делаю ls
, я мог видеть , что файлы перемещены из sourcedir
в destdir
.
Рекомендации
http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/