Copia recursiva y en orden alfabético en linux

Hola a todos, agrego esta nueva entrada para explicar como hacer una copia de una carpeta recursivamente y en orden alfabético en linux.

Os preguntaréis para que hago esto, el caso es que el sistema de archivos no copia físicamente en orden los archivos en el disco duro, sino que lo hace siguiendo otras directivas, no me preguntéis cuales por que no lo se. Si pasas esa copia a un sistema donde lea según el orden de copia no lo tendrás bien, a mi me ocurre con mi tarjeta SD y el aparato de música del coche, que lee según el orden que hemos copiado.

El caso es que cuando copio con el gestor de archivos que sea, ya sea Dolphin, Konqueror, etcetera, donde él ordene los archivos no notas nada, porque estos gestores de archivos ordenan por defecto la vista que te muestran con lo cual, cuando voy a poner música lo escucho en orden y sin ningún problema. El problema ocurre cuando pongo la música en un sistema donde no ordena por nombre de fichero sino que me pone la música según la va leyendo directamente del sistema de archivos y como linux la copia según la tenía en su sistema pues me la reproduce mal. Esto me ocurre cuando llevo música al aparato musical del coche, el pobre es un poco tonto y no ordena, con lo cual no me queda otra que ordenar la lista antes de pasarsela a comando CP.

Aquí va el comando:

cd /juanmi/musica_para_el_coche/
for file in `find *| sort -n | sed ‘s% %?%g’`; do echo «${file//?/ }»; cp –parents «${file//?/ }» /tarjeta_sd_para_el_coche/ ;done

Lo que hace el comando es ordenar la lista alfabéticamente ya sustituidos los espacios por el caracter ? ya que si no no lo ordena bien. Una vez hecho se le pasa el la lista en un bucle al comando cp, que sustituye de nuevo el ? por espacios.

Un saludo.

Deja un comentario