Script de bash, que nos permite modificar los nombre de uno o varios archivos comprendidos en una carpeta.
Tiene que recibir la cadena a buscar, la cadena a ser reemplazada si se encuentra, y el archivo o archivos a reemplazar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#!/bin/sh # # script de bash para reemplazar parte del nombre de uno o varios archivos. # sh script.sh 2013 2014 log* -> Reemplzara en todos los archivos que empiezan # log y que contengan el valor 2013 por el # valor 2014, quedando por ejemplo el archivo: # log_201301.log -> log_201401.log # # Comprobamos que recibamos tres parametros if [ $# -lt 3 ] ; then echo "usar: $0 [expresion] [reemplazar] archivos..." echo exit 0 fi # cogemos los valores recibidos expresion=$1 reemplazar=$2 shift;shift # Bucle que pasa por todos los archivos y reemplza utilizando el comando sed for file in $* do new=`echo ${file} | sed s/${expresion}/${reemplazar}/g` if [ "$new" != "$file" ];then mv ${file} $new echo "Reemplazando ${file} -> $new" fi done exit 0 |