Вот мой скрипт, чтобы сделать рефакторинг с 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;
Но не работает. Может кто-нибудь предложить мне исправить?
Вы можете просто использовать find
а также sed
как это:
find {src,test,scripts} -type f -exec sed -i 's/OldName/NewName/g' {} +
find
Команда найдет все файлы в папках src,test,scripts
в Текущий каталог а также sed
выполнит встроенную замену.
for i in $(grep -Rl OldName src/ test/ scripts/); do sed -i 's/OldName/NewName/g' "$i" ; done;
Вы можете дать список каталогов для поиска, как показано выше. лайк src/
test/
scripts/
,