2016-04-18 4 views
-2

так же просто, как и заголовок. У меня есть вложенные файлы, и я хочу выполнить команду на них, если они заканчиваются на .toml.выполните команду для каждого файла с определенным расширением

Попытка с

find . -type f -exec sed -i '3i value = 1' {} \; 

пробегает каждый файл, но есть способ сделать это в течение только файлы, заканчивающиеся в .toml?

+0

Почему нижний предел? – PeterGenius

ответ

3

Уверен; использовать переключатель -name:

find . -name '*.toml' -type f -exec sed -i '3i value = 1' {} \; 

Это соответствует любой файл, заканчивающийся в .toml. Осторожно включить котировки, чтобы предотвратить расширение * оболочкой - вы хотите, чтобы она была передана в find как есть.

Кстати, вы можете ускорить выполнение вашего сценария с помощью -exec {} + вместо:

find . -name '*.toml' -type f -exec sed -i '3i value = 1' {} + 

Это проходит несколько результатов в одном экземпляре sed, а не порождая, отдельного для каждого результата.

Смежные вопросы