Как изменить строку во многих файлах сразу и не только.

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» соответственно).

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *