sentencias scripts script programacion español ejemplos control comandos comando shell sed shellexecute

scripts - reemplace un texto en particular en todos los archivos usando el comando de shell de una sola línea



shell script comandos (6)

Está utilizando apóstrofes Unicode (RIGHT SINGLE QUOTATION MARK - U2019) en lugar de ASCII (0x27) apóstrofes alrededor de su argumento de comando sed .

tengo un archivo js renombrado al que tengo que llamar en cada una de mis páginas php. Ahora quiero reemplazar ese viejo nombre con el nuevo usando shell. lo que iam usa es esto: -

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

pero esto está dando el siguiente error:

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

ahora ¿cómo puedo hacer este reemplazo?


Probablemente haya soluciones menos detalladas, pero aquí vamos:

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

Eso sí, solo funcionará en el nivel actual del sistema de archivos, los archivos en subdirectorios no serán modificados. Además, es posible que desee reemplazar * con * .php, o hacer copias de seguridad (pasar un argumento después de -i, y hará una copia de seguridad con la extensión dada).


Prueba esto:

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


este es muy simple, sin for o loop, y se ocupa de cualquier cantidad de directorios anidados

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


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


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

hacerlo recursivamente

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