Как переместиться, вывод находки управляют к другому каталогу?

Я хочу вывод этой команды find /home -name *.pdf перемещать файлы в результат поиска к другому каталогу, например, с каналом. Как я могу сделать это?

6
задан 23 December 2016 в 18:27

2 ответа

Вам не нужен никакой луг канала, и 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  
13
ответ дан 23 November 2019 в 07:23

Если у Вас нет пробелов на названия Вашего PDF, другой способ сделать это состоит в том, чтобы выполнить эту команду в Вашем терминале:

mv $(find /home -type f -name '*.pdf') ./destination

Эти $() применяется, вывод от команды работает (find /home -type f -name '*.pdf') к команде за пределами него (mv [...] ./destination).

0
ответ дан 23 November 2019 в 07:23

Другие вопросы по тегам:

Похожие вопросы: