Inicio / Wikis / Tutoriales / Programación en BASH - Mas scripts

Programación en BASH - Mas scripts

(1 opiniones)
03 de Enero de 2007
Encriptación

12 - Mas scripts

12.1 Aplicando un comando a todos los ficheros de un directorio.

12.2 Ejemplo: Un script de copia de seguridad muy simple (algo mejor)

            #!/bin/bash          
            ORIG="/home/"
            DEST="/var/copias_de_seguridad/"
            FICH=home-$(date +%Y%m%d).tgz
            tar -cZf $DEST$FICH $ORIG
           

12.3 Re-nombrador de ficheros

          
             #!/bin/sh
             # renom: renombra múltiples ficheros de acuerdo con ciertas
             # reglas
             # escrito por Felix Hudson  Enero - 2000
             
             # primero comprueba los distintos 'modos' que tiene este
             # programa
             # si la primera ($1) condición coincide, se ejecuta esa parte
             # del programa y acaba
             
             # comprueba la condición de prefijo
             if [ $1 = p ]; then
             
             # ahora nos libramos de la variable de modo ($1) y ponemos $2
             # de prefijo
               prefijo=$2 ; shift ; shift
             
             # una rápida comprobación para ver si se especificó algún
             # fichero
             # si no, hay cosas mejores que hacer que renombrar ficheros
             # inexistentes!!
               if [$1 = ]; then
                  echo "no se especificaron ficheros"
                  exit 0
               fi
             
             # este bucle for itera a lo largo de todos los ficheros que
             # le hemos especificado al programa
             # renombra cada uno de ellos
               for fichero in $*
                 do
                 mv ${fichero} $prefijo$fichero
               done
             
             # ahora salimos del programa
               exit 0
             fi
             
             # comprueba si es un renombramiento con sufijo
             # el resto es casi idéntico a la parte anterior
             # lea los comentarios anteriores
             if [ $1 = s ]; then
               sufijo=$2 ; shift ; shift
             
                if [$1 = ]; then
                 echo "no se especificaron ficheros"
                exit 0
                fi
             
              for fichero in $*
               do
                mv ${fichero} $fichero$sufijo
              done
             
              exit 0
             fi
             
             # comprueba si es una sustitución
             if [ $1 = r ]; then
             
               shift
             
             # he incluído esto para no dañar ningún fichero si el
             # usuario no especifica que se haga nada
             # tan sólo una medida de seguridad             
               if [ $# -lt 3 ] ; then
                 echo "uso: renom r [expresión] [sustituto] ficheros... "
                 exit 0
               fi
             
             # elimina el resto de información
               VIEJO=$1 ; NUEVO=$2 ; shift ; shift
             
             # este bucle for itera a lo largo de todos los ficheros que
             # le hemos especificado al programa
             # renombra cada fichero utilizando el programa 'sed'
             # es un sencillo programa desde la línea de comandos que
             # analiza la entrada estándar y sustituye una expresión por
             # una cadena dada
             # aquí le pasamos el nombre del fichero (como entrada
             # estándar)
               for fichero in $*
               do
                 nuevo=`echo ${fichero} | sed s/${VIEJO}/${NUEVO}/g`
                 mv ${fichero} $nuevo
               done
             exit 0
             fi
             
             # si se llega a esta parte es que no se le pasó nada
             # apropiado al programa, por lo que le decimos al usuario
             # cómo hacerlo
             echo "uso:"
             echo " renom p [prefijo] ficheros.."
             echo " renom s [sufijo] ficheros.."
             echo " renom r [expresión] [sustituto] ficheros.."
             exit 0
             
             # hecho!
             
          

12.4 Re-nombrador de ficheros (sencillo)

     #!/bin/bash
     # renombra.sh
     # renombrador de ficheros básico

     criterio=$1
     expresion=$2
     sustituto=$3
     
     for i in $( ls *$criterio* ); 
     do
         orig=$i
         dest=$(echo $i | sed -e "s/$expresion/$sustituto/")
         mv $orig $dest
     done
Valora este capítulo: (1 opiniones)
Autor y licencia de 'Programación en BASH - Mas scripts'
Mike G Extraído de: http://www.insflug.org/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Programación en BASH - Mas scripts' (1)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Programación en BASH - Mas scripts'

Incluye una gran variedad de vocabulario, en su traducción española.
Se comenta la creación y el manejo de prompts de terminales en modo texto y... Más »
No conocerás lo que es Linux hasta que no conozcas la consola . La consola... Más »
Continuando el tema de uno de mis artículos anteriores, sobre cómo mejorar el rendimiento de... Más »
La Magía es energia por consiguiente esta en perpetua transformación. En el libro de las... Más »
¿Estás seguro de que deseas eliminar este capítulo?