2 votos

Ordenar los archivos en el Terminal como el finder

¿Es posible en la línea de comandos tener el mismo orden de clasificación de los archivos/carpetas que el Finder? Si ejecuto find . -type d Obtengo como salida:

./Folder 1
./Folder 10
./Folder 11
./Folder 2
./Folder 3
...

He intentado find -s . -type d , y también añadió algunos sort opciones. No hubo suerte.

Lo que quiero es esto:

./Folder 1
./Folder 2
./Folder 3
...
./Folder 10
./Folder 11

2voto

Douglas Puntos 10417

Si miras lo que find dice sobre la clasificación:

 -s   Cause find to traverse the file hierarchies in 
lexicographical order, i.e., alphabetical order within each directory.  
Note: \`find -s\` and \`find | sort\` may give different results.

Esto significa que tenemos que canalizarlo a sort para poder manipularlo un poco más.

Como ya has visto, una simple ordenación alfanumérica no funcionará porque está comparando todo como un carácter ANSI y no como números. Lo que tenemos que hacer es sólo comparar los números. Podemos hacerlo con la función -k opción de sort

find . -type d | sort -k2.3

Lo que el sort -k2.3 está haciendo es ordenar en el segundo campo (delimitado por el espacio) terminando en la 3ª posición. Este es el resultado utilizando su convención de nomenclatura de carpetas 1 :

.
./Folder 1
./Folder 2
./Folder 3
./Folder 4
./Folder 5
./Folder 6
./Folder 7
./Folder 8
./Folder 9
./Folder 10
./Folder 11
./Folder 12
./Folder 13
./Folder 14
./Folder 15

1 Para crear esta estructura de carpetas, he utilizado el comando en mi carpeta de inicio:

mkdir test; cd test; for n in {1..15}; do mkdir "Folder $n"; done

0voto

Ahmad Ramdani Puntos 196

También puede hacer

ls -v

que ordena los archivos por números de versión en nombres por orden natural.

Desde man ls

-v     natural sort of (version) numbers within text

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X