1

В Mac OS как найти и заменить определенный текст во всех каталогах и их подкаталогах?

1 ответ1

5

Используйте комбинацию find(1) и sed(1):

# Find all files under the directory hierarchy rooted at 'root', and replace
# all instances of the regular expression 'pattern' with 'replacement' in all
# of those files:
find root -type f -exec sed -i~ 's/pattern/replacement/g' '{}' '+'

Если вы столкнетесь с ограничениями длины командной строки, замените '+' в конце на ';' , Это заставит его работать медленнее (поскольку он должен был форкать новый процесс для каждого файла), но у него не будет опасности слишком длинной командной строки для sed .

Вы также можете выполнить замену только определенных файлов, добавив соответствующие фильтры для find (например, -name *.txt чтобы заменить только файлы .txt).

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