find . -type f -exec grep -l XXX {} \;|tee /tmp/fileschanged|xargs perl -pi.bak -e 's/XXX/YYY/g'
Команда find . -type f -exec grep -l XXX {} \;|tee /tmp/fileschanged|xargs perl -pi.bak -e 's/XXX/YYY/g'
выполняет следующие действия:
1. find . -type f -exec grep -l XXX {} \;
: ищет все файлы (-type f
) в текущей директории и её поддиректориях, в которых присутствует строка «XXX». Результаты поиска передаются на следующий шаг.
2. tee /tmp/fileschanged
: записывает результаты поиска в файл /tmp/fileschanged
, чтобы сохранить список измененных файлов.
3. xargs perl -pi.bak -e 's/XXX/YYY/g'
: использует команду perl
для замены всех вхождений строки «XXX» на «YYY» в каждом файле из списка. Оригинальные файлы сохраняются с расширением .bak
.
Эта команда полезна, когда требуется автоматически заменить конкретную строку во множестве файлов. Альтернативой может быть использование других инструментов, таких как sed
или awk
, чтобы выполнить замену строки. Аргументы, передаваемые команде, включают строку для поиска и замены («XXX» и «YYY» соответственно).