Неправильная команда с использованием sed, в других папках, перечисленных с помощью grep

Вот мой скрипт, чтобы сделать рефакторинг с PHP. Я создал команду, которая работает внутри vim, но только внутри папки.

!for i in `grep -Rl OldName foldername/`; do sed -i 's/OldName/NewName/g' $i; done;

Я спрашиваю здесь об обновлении этого скрипта, которое позволяет мне запускать sed в нескольких папках с помощью одной команды. Я пробовал это:

!for i in `grep -Rl OldName .{a,b,c}/`; do sed -i 's/OldName/NewName/g' $i; done;

Но не работает. Может кто-нибудь предложить мне исправить?

0

Решение

Вы можете просто использовать find а также sed как это:

find {src,test,scripts} -type f -exec sed -i 's/OldName/NewName/g' {} +

find Команда найдет все файлы в папках src,test,scripts в Текущий каталог а также sed выполнит встроенную замену.

2

Другие решения

for i in $(grep -Rl OldName src/ test/ scripts/); do sed -i 's/OldName/NewName/g' "$i" ; done;

Вы можете дать список каталогов для поиска, как показано выше. лайк src/ test/ scripts/ ,

1

По вопросам рекламы [email protected]