2010-11-20 23 views
16

¿Cómo puedo pedir archivos en un directorio por su verdadero orden numérico?Bash true numian order

file1.txt 
file2.txt 
file11.txt 
... 

creo que se llama: Orden Natural

+0

¿Sería una opción rellenar los números con ceros al crear los archivos? – thejh

+0

¿Cuál es la conexión bash aquí? –

+0

"bash" tiende a sugerir que el problema debe resolverse en algún tipo de sistema operativo Unix y no en Windows. – icanhasserver

Respuesta

19

Utilice la opción -v:

ls -v file* 
file1 
file2 
file11 
file12 

Otra opción puede estar usando sort -V, en el supuesto de que uno está disponible en su plataforma:

ls file* |sort -V 
+2

Solo con GNU 'ls'; en MacOS X, la opción 'ls -v' es 'Forzar impresión no editada de caracteres no gráficos'. –

+0

'$ ls -v' devuelve' test5.txt text1.txt text2.txt text11.txt' para mí. – thejh

+0

¿Qué hay de usar ordenar (ver la edición anterior)? Ese también viene con una opción de clasificación natural. – icanhasserver

0

Si todos los nombres de archivo son fileSOMENUMBER.txt, intente esto:

ls -1|sed 's:^[^0-9]*\([0-9]*\).*$:\1:g'|sort -n|sed 's:^\(.*\)$:file\1.txt:g' 
5

Para esta lista particular de archivos, ordenar numéricamente comenzando en el quinto carácter del primer campo.

$ ls file*|sort -k1.5n 
file1 
file2 
file11 
file12