Я хочу в grep файлы с определенным расширением. Я знаю, как сделать это, использование находит команду как удар:
find . -type f -name "*.pptx"
Я задаюсь вопросом, могу ли я сделать выше команды параллельно (использующий больше ЦП).
Спасибо!
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
работать как многие find
s как возможный параллельно. Можно ограничить его для выполнения при большей части использования процессов N -PN
.find
на всех подкаталогах мы наконец выполняем a find
на текущем каталоге также (и только на текущем каталоге - следовательно -maxdepth 1
).Предостережение: find
вероятно, будет IO-intensive. Существует только такая польза, которую можно извлечь из выполнения нескольких экземпляров параллельно.
Кроме того, вывод многих find
s может быть смешан, таким образом уменьшив полноценность этого подхода.