9

Как мне найти все файлы в каталоге и подкаталогах и запустить команду для них?

Например,

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

находит все текстовые файлы и:

find . -type f -name "*.txt" | gedit

отправляет его в gedit, но внутри текстового файла. Я хочу, чтобы Gedit открыл все текстовые файлы.

2 ответа2

13

Вы можете использовать флаг -exec для выполнения команды для каждого соответствующего файла:

$ find ./ -type f -name "*.txt" -exec gedit "{}" \;

Синтаксис

Синтаксис немного странный (см. Команду -exec command ; в manpages):

The string `{}' is replaced by the current file name being processed

Вы также можете рассмотреть -execdir , который сделает то же самое, но выполнит команду из подкаталога, содержащего соответствующий файл (это обычно предпочтительнее).

5

find . -type f -name "*.txt" -print0 | xargs -0 gedit

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .