mamedu :: bash_archivos_con_espacios
mamedu.gif

Programación y linux

Archivos con espacios en bash

22 de June, 2010

Trabajar con archivos que contienen espacios puede ser un dolor de cabeza con bash.

Aquí dejo un ejemplo de como hacerlo.

En este ejemplo vamos a buscar los archivos que subversion nos indica que han sido modificados:

# Se definie el fin de linea como el separador entre parámetros
DIFS="$IFS" ; IFS=$'\n'
echo
for x in $(svn status | grep ^M | awk -v FS='M      ' '{printf "\n%s",$2}') ; do
   echo - "$x"
   parametros="$parametros '$x'"
done
IFS="$DIFS"
echo
read -n 1 -s -p 'Añadir (s/n): ' OPCION
if [ "$OPCION" = 's' ] ; then
   cmd="$cmd $parametros" ; eval $cmd
fi

Añadimos en un array los archivos recibidos:

declare -a e_archivos_seleccionados=()
c=0
while [ -n "$1" ]; do
   echo - "$c) $1"
   e_archivos_seleccionados[$c]="$1"
   shift 1
   let c=c+1
done

Añadimos lista de archivos a base de datos:

for c in `seq 0 ${#e_archivos_seleccionados[*]}` ; do

   x="${e_archivos_seleccionados[$c]}"
   echo "- $x"
   # Comprobar que no este ya en la base de datos
   SQL="SELECT nombre from rMovimientoArchivos WHERE nombre='$x' AND idMovimiento=$movimientoId"
   SALIDA=`ejecutarSQL "$SQL" "-N"`

   if [ "$SALIDA" != "$x" ] ; then

     SQL="INSERT INTO rMovimientoArchivos VALUES ($movimientoId,'$x')"
     ejecutarSQL "$SQL"
     if [ "$?" != "0" ] ; then
        mensajes "Archivo: $x no fue añadido a movimiento: $movimientoId"
     else
        mensajes "Archivo: $x añadido a movimiento: $movimientoId"
     fi

   fi

done

Pasar un array de archvios a un comando colocando comillas para que no de problemas.:

parametros="$(for n in `seq 0 $((${#aSALIDA[*]}-1))` ; do echo -n "'${aSALIDA[$n]}' " ; done)"
cmd="$mt_editor_dev $parametros"
eval "$cmd"
Últimas entradas en bash
Archivos con espacios en bash

22 de June, 2010

/ Apuntes / Programación / bash

Trabajar con archivos que contienen espacios puede ser un dolor de cabeza con bash. Aquí dejo un ejemplo de como hacerlo. En este ejemplo vamos a buscar los archivos que subversion nos indica que...
varios

15 de Marzo, 2010

/ Apuntes / Programación / bash

Cambiando el contenido de la variable IFS podemos conseguir que el cat <archivo> nos devuelva una linea entera sin tener en cuenta los espacios. ejemplo: DIFS="$IFS" # separador fin de linea...
bash saber si estamos en una consola

13 de February, 2010

/ Apuntes / Programación / bash

if [ `tty` ] ; then echo 'Estamos en consola'else xterm -e "echo No estamos en consola; read" echo 'No estamos en consola'fi Colocando esta linea en la cabecera de un script conseguimos detec...
Cosas útiles con bash

15 de Noviembre, 2009

/ Apuntes / Programación / bash

Listar ficheros abiertos lsoft -p Pid del proceso -u usuario Repetir comandos watch ls Repite el comando constantemente...
zenity

25 de Marzo, 2009

/ Apuntes / Programación / bash

Zenity nos puede servir para aquellos scripts que lanzamos en segundo plano y no vemos la salida que produce el script. Un ejemplo sencillo: #!/bin/bash DIR_MANUAL=/home/eduardo/Documents/doc/progr...
enscript

25 de Septiemre, 2008

/ Apuntes / Programación / bash

Comando de ejemplo para enscript Creación de caratula con listado de las canciones de un directorio  Generamos listado en archivo temporal  ls -R > /tmp/caratula.txt...
Calcular el tiempo de un archivo wav

25 de Septiemre, 2008

/ Apuntes / Programación / bash

ls -la *.wav|awk '{print $9 " " $6}'| awk '{m=($2/10584000)} {printf("%s %2.2fn", $1, m) }' | cut --output-delimiter=" " -d "," -f 1,2 | awk '{s=...
cut

30 de Abril, 2008

/ Apuntes / Programación / bash

Con cut podemos cortar las lineas de un fichero de diferentes maneras: echo "Eduardo Magrané" | cut -c3 # Devuelve el carácter numero 3 (la u) echo "Eduardo Magrané" | cut -d...
Administrar

Nombre:

Contraseña: