Найти и выполнить команду для всех файлов в каталоге, которые имеют определенное имя папки - PullRequest
0 голосов
/ 27 октября 2018

Я хочу использовать команду find, чтобы выполнить специальную команду для всех файлов в каталоге, которые содержатся в нескольких разных каталогах с определенным ключевым словом в нем (ключевое слово «Alpha») и сохранить вывод внутрирабочий каталог исходного файла, на котором я выполнил команду.

Команда работает так, что вам необходимо предоставить исходный файл для выполнения команды, а затем имя только что преобразованного файла.Вот так

command file_to_run_command_on.txt new_file.txt

Это мой код

find $PWD -name *.txt* -exec command {} new_file. \;

Прямо сейчас он находит все текстовые файлы в этом каталоге даже в подкаталогах и выводит только один файл в каталогеЯ запускаю начальную команду поиска из.Я также не уверен, как добавить дополнительный поиск по ключевому слову в каталоге.Все советы приветствуются!

1 Ответ

0 голосов
/ 27 октября 2018

-exec запускает команду в каталоге, из которого вы запускаете find.

-execdir запускает команду в каталоге соответствующего файла.

Чтобы найти только *.txt* файлы, чьи родители содержат определенный файл, вы можете использовать:

find "$PWD" -path "*keyword*/*.txt*" -execdir command {} new_file \;

Эта команда будет запускаться для foo/bar/some-keyword-dir/baz/etc/file.txts, но не для foo/bar/baz/file.txts (без ключевых слов в именах родительских каталогов) или foo/bar/some-keyword-dir/baz/file.tar (не *.txt*)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...