El 29 de septiembre de 2015, 10:57, Jorge A. Secreto <jorgesecr...@gmail.com > escribió:
> > > El 29 de septiembre de 2015, 10:00, fernando sainz < > fernandojose.sa...@gmail.com> escribió: > >> El día 29 de septiembre de 2015, 14:45, Jorge A. Secreto >> <jorgesecr...@gmail.com> escribió: >> > Hola gente! >> > Disculpen que consulte por esta pavada, pero estuve leyendo el man de >> awk, >> > el de sed, el de bash, busqué en google 'numerar archivos linea comando >> > linux' y cosas por el estilo y nada me sacó de mi ignorancia :-( >> > Tengo algunos miles de archivos de texto que tengo que concatenar en >> orden. >> > Están numerados con el orden que debo respetar al comienzo del nombre, >> por >> > ej '1 xxx.txt' '2 xxx.txt' etc. >> > El problema se me presenta cuando los uno con 'cat -s *.txt > >> unidos.txt', >> > porque el orden que usa cat para leerlos es alfabético en vez del orden >> > natural numérico, como haría 'ls -v', es decir, ordena '100 ''10 ''1 ' >> en >> > vez de '1 ''10 ''100 ', que es lo que necesito. >> > Podría armar algún programa, en alto nivel, para hacerlo, pero me parece >> > exagerado, creo que se tiene que poder hacer desde la línea de comando. >> > Si álguien de la lista fuera tan amable como para desasnarme, habría >> subido >> > un peldañito más en su camino al cielo. >> > Gracias y, nuevamente, disculpen que moleste. >> >> >> Así sin pensarlo mucho se me ocurre que esto te puede funcionar: >> >> cat `ls *kk | sort -n` >> o >> cat $(ls *kk | sort -n) >> >> S2. >> >> Hola Fernando, Manolo muchas gracias por contestar. > > > Cat no se lleva bien con la sustitucion de la entrada. :-P > > $ cat `ls -v *.txt` > pepe > cat: opción inválida -- '.' > > $ cat -- `ls -v *.txt` > pepe > cat: 01: No existe el fichero o el directorio > > $ ls -v *.txt|cat - > Devuelve la lista de archivos porque lo toma como una entrada de texto > > por eso se me ocurrió que podría haber alguna forma de renombrarlos > poniendo, por ej, los números como 000001, 000002...000010...000100, que > solucionaría lo del ordenamiento natural y a partir de ahi sólo queda > concatenarlos. > > Gracias nuevamente. > > > > Hola Fernando, Manolo, Camaleon, Pablo muchas gracias por contestar. Camaleon sort -g *.txt > ordenados.txt genera un archivo con los renglones de todos los archivos de orígen preciosamente en orden alfabético. :-D Pablo for num in $(seq 1 1000) do cat $num_xxxx.txt >> consolidado.txt done funcionaría (y me gustó la idea), pero los archivos los nombran de acuerdo a como sopla el viento, algunos empieza con un cero adelante, pero no todos :-( Manolo Como le decía a Pablo los archivos tiene de todo en el nombre, espacios, guiones, acentos, puntos, lo único que respetan, me parece, es que terminan en txt. Y yo soy bastante chambón con los comandos y sus parámetros, redirecciones, tuberías y esas cosas. Como te podrás haber dado cuenta :-( La solución que me sirvió: Finalmente encontré las palabras claves correctas para la búsqueda :-P http://unix.stackexchange.com/questions/51950/sed-extending-a-string-of-numbers-to-a-certain-number-of-digits-by-padding-with http://www.linux-party.com/index.php/35-linux/8923-renombrar-multiples-ficheros-quitar-espacios-cambiar-mayusculas-a-la-vez-en-linux Haciendo un batido de las dos páginas pude armar for FILE in *.txt ; do NEWFILE=`echo $FILE | sed -r -e 's/[0-9]/0000000&/' -e 's/0*([0-9]{8}[^0-9])/\1/' -e 's/- / /g' -e 's/ /_/g'`; cp -T "$FILE" numerados/$NEWFILE ; done que hizo lo que necesitaba Nuevamente muchas gracias a todos. -- Jorge A Secreto Analista de Sistemas MP 361