Как сказал Пол, вы хотите сначала найти файлы, которые хотите отредактировать, а затем отредактировать их. Альтернативой использованию find является использование GNU grep (по умолчанию в Ubuntu), например:
grep -r -l from . | xargs -0 -n 1 sed -i -e 's/from/to/g'
Вы также можете использовать ack-grep (sudo apt-get install ack-grep или посетить http://petdance.com/ack/), если вы знаете, что вам нужен только определенный тип файла, и хотите игнорировать вещи в каталогах управления версиями. например, если вам нужны только текстовые файлы,
ack -l --print0 --text from | xargs -0 -n 1 sed -i -e 's/from/to/g'
# `from` here is an arbitrary commonly occurring keyword
Альтернативой использованию sed является использование perl, который может обрабатывать несколько файлов за одну команду, например,
grep -r -l from . | xargs perl -pi.bak -e 's/from/to/g'
Здесь perl предлагается отредактировать на месте, сначала создав файл .bak.
Вы можете комбинировать любую из левых сторон трубы с правыми сторонами, в зависимости от ваших предпочтений.
person
Emil Sit
schedule
09.02.2009