2011-01-10 9 views
2

Мне нужно заменить некоторую строку на другую в файлах. Я знаю, как это сделать с одним файлом: sed -i 's/a/b/'. Но как насчет рекурсивной функции? Я думаю, что мне нужно использовать find . -name * с xargs.Вызов sed в linux

мне нужна ваша помощь :)

ответ

8

Вы правильны, find и xargs, что вы хотите использовать. Вот пример, который найдет все файлы с расширением файла .ext в текущей папке и всех подпапках и заменит букву a на письмо b в файлах.

find . -name "*.ext" | xargs sed -i 's/a/b/g' 
+0

'СЭД: не может изменить:. Не обычный файл СЭД: не может редактировать ./.git/objects/68: не регулярный File' – Ockonal

+0

Я пытаюсь Ставить некоторые в моем git repo. И я получаю эту ошибку. – Ockonal

+2

Что вы используете вместо «* .ext» в поиске? Если это «*», это также будет соответствовать каталогам, на которые sed не будет работать. Добавьте «-type f» в команду find, чтобы получать обычные файлы. –

Смежные вопросы