j'ai un fichier JS renommé que je dois appeler dans chacune de mes pages php. Maintenant, je veux remplacer cet ancien nom par le nouveau utilisant Shell . Ce que iam utilise est le suivant: -
sed -i ’s/old/new/g’ *
mais cela donne l'erreur suivante: -
sed: -e expression #1, char 1: unknown command:
maintenant, comment puis-je faire ce remplacement?
Il y a probablement moins de solutions verbeuses, mais on y va:
for i in *; do sed -i 's/old/new/g' "$i"; done
Attention, cela ne fonctionnera que sur le niveau actuel du système de fichiers, les fichiers des sous-répertoires ne seront pas modifiés. En outre, vous voudrez peut-être remplacer * par * .php ou faire des sauvegardes (passez un argument après -i et vous ferez une sauvegarde avec l'extension donnée).
sed -i.bak 's/old/new/g' *.php
le faire récursivement
find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;
Vous utilisez des apostrophes Unicode (marque de citation droite - U2019) au lieu de ASCII (0x27) apostrophes autour de votre argument de commande sed
.
celui-ci est très simple, sans boucle for, et prend en charge tout nombre ou répertoires imbriqués
grep -rl 'oldText' [folderName-optional] | xargs sed -i 's/oldText/newText/g'
Perl -pi -e 's/old/new/g' *.php
Pour être complet, fournir la version compatible OSX de la réponse acceptée ci-dessus (pour répondre aux commentaires de @jamescampbell)
for i in *.php; do sed -i .orig 's/old/new/g' "$i"; done
Cette commande crée des fichiers de sauvegarde .orig
.
Je sais que je suis vraiment en retard mais quand même:
find . -type f -name "*.php"|xargs sed -i 's/old/new/g'
Utilisez les guillemets doubles
sed -i "s/old/new/g" *