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]