у меня есть переименованный js файл, который я должен назвать на каждой моей php странице. Теперь я хочу заменить то старое название новым с помощью оболочки. то, что я использую, является этим:-
sed -i ’s/old/new/g’ *
но это дает следующую ошибку:-
sed: -e expression #1, char 1: unknown command:
теперь, как я могу сделать эту замену??
Вероятно, существуют менее подробные решения, но начнем:
for i in *; do sed -i 's/old/new/g' "$i"; done
Имейте в виду, это будет работать только на текущем уровне файловой системы, файлы в подкаталогах не будут изменены. Кроме того, вы можете заменить * на * .php или сделать резервную копию (передайте аргумент после -i, и она сделает резервную копию с заданным расширением).
Попробуйте следующее:
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
sed -i.bak 's/old/new/g' *.php
сделать это рекурсивно
find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;
Вы используете апострофы Unicode (RIGHT SINGLE QUOTATION MARK - U2019) вместо апострофов ASCII (0x27) вокруг аргумента команды sed
.