Cerca i reemplaça text en fitxers

1a alternativa

Per cercar i reemplaçar en varis fitxers recursivament amb la comanda sed (la primera només canvia la primera aparició de pepito a cada línea, la segona totes les aparicions):

find ./ -type f -exec sed -i 's/pepito/pepita/' {} \;
find ./ -type f -exec sed -i 's/pepito/pepita/g' {} \;

2a alternativa

S'ha de fer un script de la shell per poder processar varis fitxers amb la comanda sed. El següent script canvia totes les paraules “pepito” per “pepita”. Els fitxers canviats tenen extensió .new

for FILE in `grep -r -s -l "pepito" *` ; do
 sed s/pepito/pepita/g $FILE > $FILE.new
done

Quan hagis comprovat que els fitxers canviats amb extensió .new estan bé, executes el següent pq canvïi els fitxer .new pels originals.

for FILE in `grep -r -s -l "pepito" *` ; do
 sed s/pepito/pepita/g $FILE > $FILE.new
 mv $FILE.new $FILE
done

Si ho vols fer automáticament amb un script de la shell pràctic d'usar, aquí el tens:

#
#Aquest programa canvia tots els textos <old_text> pel text <new_text> en tots els fitxers

if [ $# != 2 ]; then #Hi ha mes o menys de dos parametres
  echo "$0 <old_text> <new_text>"
  echo "Aquest programa canvia tots els textos <old_text> pel text <new_text> en tots els fitxers"
  echo "Els fitxers originals es conserven reanomenats amb extensió .bak"
  exit 1
fi

for FILE in `grep -r -s -l "$1" *` ; do
  echo "File: $FILE"
  mv $FILE $FILE.bak
  sed 's/'"$1"'/'"$2"'/g' $FILE.bak > $FILE
done

Cercar/eliminar links simbòlics

find . -maxdepth 1 -type l
find . -maxdepth 1 -type l -delete

System/CercaRemplaça (last edited 2013-11-29 09:29:03 by jesteve)

Contenidos creados por el equipo de Zikzakmedia. Creative Commons By-NC-SA

PythonZikzakmedia