В Mac OS как найти и заменить определенный текст во всех каталогах и их подкаталогах?
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).