Как найти все файлы с тем же расширением в рамках каталога параллельно

Я хочу в grep файлы с определенным расширением. Я знаю, как сделать это, использование находит команду как удар:

find . -type f -name "*.pptx"

Я задаюсь вопросом, могу ли я сделать выше команды параллельно (использующий больше ЦП).

Спасибо!

0
задан 20 January 2015 в 01:59

1 ответ

find- ception:

find . -maxdepth 1 -mindepth 1 -type d -print0 | xargs -0 -L1 -P0 -i find {} -type f -name '*.pptx'
find . -maxdepth 1 -type f -name '*.pptx'
  • -maxdepth 1 -mindepth 1 ограничивает поиск непосредственным содержанием каталога. Мы ищем все подкаталоги (-type d).
  • Затем мы используем xargs работать find на всех подкаталогах. -0 в сочетании с -print0 заботится о любых специальных символах, которые могут произойти в именах файлов.
  • -P0 говорит xargs работать как многие finds как возможный параллельно. Можно ограничить его для выполнения при большей части использования процессов N -PN.
  • Наконец, так как мы работали find на всех подкаталогах мы наконец выполняем a find на текущем каталоге также (и только на текущем каталоге - следовательно -maxdepth 1).

Предостережение: find вероятно, будет IO-intensive. Существует только такая польза, которую можно извлечь из выполнения нескольких экземпляров параллельно.
Кроме того, вывод многих finds может быть смешан, таким образом уменьшив полноценность этого подхода.

2
ответ дан 6 October 2019 в 03:53

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

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