Используя оболочку типа bash или zshell, как я могу сделать рекурсивный поиск и замену? Другими словами, я хочу заменить каждое вхождение '/path/to/folder' на '/other/dir' во всех файлах в этом каталоге и его подкаталогах.

По сути, это тот же вопрос, что и оригинал с этим именем, но мне нужно знать, что произойдет, если в тексте, который вы хотите заменить, есть косые черты, как в приведенных выше примерах? Могу ли я просто вставить свой код в месте поиска / замены в аргументы? Или я должен сделать что-то еще ???

Все это будет сделано через ssh к серверу Ubuntu.

Спасибо!

1 ответ1

1

Используйте find и sed:

find . exec sed -i .bak 's,/path/to/folder,/other/dir,g' \;
  • Вы также можете использовать awk или perl вместо sed - выбирайте все, что вам нравится.
  • Вы можете передать опции, чтобы find чтобы ограничить файл, с которым вы работаете, & c

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