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