find . -type f -name "*.txt" -exec sed -i 's/привет/hello/g' {} +
символ + в конце после {} используется для группового выполнения команды sed над несколькими файлами одновременно.
Что означает + в -exec ... {} +
- Опция
-execв командеfindпозволяет выполнить указанную команду для каждого найденного файла, подставляя имя файла вместо{}. - Если в конце стоит
\;, то команда запускается отдельно для каждого файла. - Если в конце стоит
+, тоfindсобирает несколько найденных файлов и передает их одной командой, то естьsedбудет вызван один раз с несколькими файлами сразу.
Это повышает эффективность, так как сокращает количество запусков команды, особенно при большом количестве файлов.
Пример
- С
\;:
find . -type f -name "*.txt" -exec sed -i 's/привет/hello/g' {} \;
sed запускается для каждого файла по отдельности.
- С
+:
find . -type f -name "*.txt" -exec sed -i 's/привет/hello/g' {} +
sed запускается один или несколько раз, но каждый раз с группой файлов.
Итог
+ в конце -exec означает, что команда будет выполнена с группой файлов, а не по одному, что делает выполнение более эффективным и быстрым[13].
Citations:
[1] https://habr.com/ru/companies/ruvds/articles/667490/
[2] https://hepd.pnpi.spb.ru/~shevel/Book/node66.html
[3] https://unixforum.org/viewtopic.php?t=107999
[4] https://losst.pro/komanda-sed-linux
[5] https://www.opennet.ru/docs/RUS/bash_scripting_guide/a14586.html
[6] https://blog.ukrnames.com/administrirovanie/find-sed-awk-v-unix-sistemah
[7] https://kamaok.org.ua/?p=2424
[8] https://lisakov.com/blog/renaming-find-sed-xargs-mv/
[9] https://ru.wikibooks.org/wiki/Sed:_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE
[10] https://www.syrog.ru/news/11/
[11] http://mirtepla.kz/prmery-sed
[12] https://linuxcookbook.ru/articles/komanda-sed-linux
[13] https://wiki.dieg.info/find
---
Answer from Perplexity: pplx.ai/share
[file-name 000134_2025-05-08_23-33-51.txt]