Я хочу вывод этой команды find /home -name *.pdf
перемещать файлы в результат поиска к другому каталогу, например, с каналом. Как я могу сделать это?
Вам не нужен никакой луг канала, и xargs
для создания имен файлов как аргументов в пользу mv
.
Просто использование mv
в -exec
действие find
:
find /home -type f -name '*.pdf' -exec mv -t /destination {} +
/destination
с фактическим целевым каталогом find
обработает все возможные имена файлов find
, обработает ARG_MAX
путем передачи как много имен файлов сразу так, чтобы не инициировал ARG_MAX
-type f
'*.pdf'
, так, чтобы оболочка не разворачивала их заранее, поскольку find
обработает их , Если по некоторой странной причине, или по изучению цели, необходимо использовать канал - xargs
:
find /home -type f -name '*.pdf' -print0 | xargs -0 mv -t /destination
Если у Вас нет пробелов на названия Вашего PDF, другой способ сделать это состоит в том, чтобы выполнить эту команду в Вашем терминале:
mv $(find /home -type f -name '*.pdf') ./destination
Эти $()
применяется, вывод от команды работает (find /home -type f -name '*.pdf'
) к команде за пределами него (mv [...] ./destination
).