Подтвердить что ты не робот

Замените конкретный текст во всех файлах, используя команду командной строки

У меня есть переименованный js файл, который я должен вызывать на каждой из моих php-страниц. Теперь я хочу заменить это старое имя новым, используя оболочку. что я могу использовать: -

sed -i ’s/old/new/g’ *

но это приводит к следующей ошибке: -

sed: -e expression #1, char 1: unknown command:

теперь как я могу сделать эту замену?

4b9b3361

Ответ 1

Есть, вероятно, менее подробные решения, но здесь мы идем:

for i in *; do sed -i 's/old/new/g' "$i"; done

Помните, что он будет работать только на текущем уровне файловой системы, файлы в подкаталогах не будут изменены. Кроме того, вы можете заменить * на *.php или сделать резервные копии (передать аргумент после -i, и он сделает резервную копию с данным расширением).

Ответ 2

sed -i.bak 's/old/new/g' *.php

сделать это рекурсивно

find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;

Ответ 3

Вы используете апострофы Unicode (RIGHT SINGLE QUOTATION MARK - U2019) вместо ASCII (0x27), апострофы вокруг вашего аргумента команды sed.

Ответ 4

perl -pi -e 's/old/new/g' *.php

Ответ 5

этот очень простой, без цикла или цикла, заботиться о любом количестве или вложенных каталогах

grep -rl oldText [folderName-optional] | xargs sed -i s/oldText/newText/g

Ответ 6

Попробуйте следующее:

ls | grep "php" > files.txt
for file in $(cat files.txt); do
    sed 's/catch/send/g' $file > TMPfile.php && mv TMPfile.php $file
done