Título: [Bash] Problema con array [resuelto] Publicado por: hervasiop12345 en 8 Julio 2011, 14:31 pm Hola. Quiero hacer un script que compare los ficheros de dos directorios. Para ello primero almaceno en dos arrays los ficheros de estos pero el problema está en que si el nombre de algún fichero tiene un espacio me lo guarda en dos posiciones del array. Dejo algo de código y gracias.
Código
Título: Re: [Bash] Problema con array Publicado por: hervasiop12345 en 10 Julio 2011, 23:25 pm nadie?
Título: Re: [Bash] Problema con array Publicado por: leogtz en 11 Julio 2011, 00:32 am Código
Título: Re: [Bash] Problema con array Publicado por: hervasiop12345 en 11 Julio 2011, 18:32 pm Muchas gracias por tu ayuda. Gracias a eso he avanzado pero me he visto de nuevo atascado ya que al comparar nombres de ficheros siendo alguno con espacio no lo hace bien. Debería de avanzar un array y avanza otro .Dejo el código con el que intentaba calcular la intersección de los directorios para que veas mejor a lo que me refiero:
Código: #!/bin/bash declare -a carpetas=() declare -a carpetas2=() i=0 j=0 if test -d "$1" then if test -d "$2" then cd $1; find -maxdepth 1 ! \( -type d \)| cut -c 3- |sort > dirs while read elemento do carpetas=("${carpetas[@]}" "$elemento") done < ./dirs cd $2; find -maxdepth 1 ! \( -type d \)| cut -c 3- |grep -v "dirs" |sort> dirs while read elemento do carpetas2=("${carpetas2[@]}" "$elemento") done < ./dirs tamanyo1=${#carpetas[@]} tamanyo2=${#carpetas2[@]} while true do fich="${carpetas[$i]}" fich2="${carpetas2[$j]}" echo $fich echo $fich2 if [ "$fich" == "$fich2" ] then echo "El fichero "${carpetas[$i]}" es común a ambos directorios" let i=i+1 let j=j+1 elif [ "$fich" > "$fich2" ] then let j=j+1 elif [ "$fich" < "$fich2" ] then let i=i+1 fi if [ $i -eq $tamanyo1 ] || [ $j -eq $tamanyo2 ] then break fi done fi fi Título: Re: [Bash] Problema con array Publicado por: leogtz en 11 Julio 2011, 19:19 pm ¿Qué tiene que hacer el script?
¿Cuál es la idea general? ¿Dónde crees que está el fallo? Título: Re: [Bash] Problema con array Publicado por: hervasiop12345 en 11 Julio 2011, 22:52 pm El script recibe dos argumentos que son directorios. Si estos son correctos entonces tiene que ver que ficheros tiene uno que no tiene otro y mostrarlos diciendo este fichero está en tal directorio pero no en el otro. Para probar que funcionaba bien he intentado hacer la intersección de estos pero no funciona bien la comparación y creo que es por los espacios en los nombres de los ficheros.
Título: Re: [Bash] Problema con array Publicado por: hervasiop12345 en 20 Julio 2011, 12:06 pm Necesito saber como comparar dos nombres para ver cual es menor y cual mayor para así avanzar un array u otro pero tal y como lo tengo hecho parece que no funciona bien
Título: Re: [Bash] Problema con array Publicado por: leogtz en 21 Julio 2011, 08:42 am Comparar nombres respecto a longitud o a lexicograficamente cuál es mayor?
Título: Re: [Bash] Problema con array Publicado por: hervasiop12345 en 21 Julio 2011, 10:15 am lexicográficamente. Ya lo he resuelto , he cambiado de orden los if y funciona y bueno lo he terminado
Código: http://pastebin.com/SzvxLD2P |