Se guardi cosa dice find
sull'ordinamento:
-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.
Questo significa che dobbiamo ridurlo a sort
in modo da poterlo manipolare un po 'di più.
Come hai già visto, un ordinamento alfanumerico semplice non funzionerà perché sta confrontando tutto come un carattere ANSI e non come numeri. Quello che dobbiamo fare è confrontare i numeri. Possiamo farlo con l'opzione -k
di sort
find . -type d | sort -k2.3
Ciò che sta facendo il comando sort -k2.3
è l'ordinamento sul secondo campo (delimitato dallo spazio) che termina in terza posizione. Questo è il risultato usando la convenzione di denominazione della cartella 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 Per creare questa struttura di cartelle, ho usato il comando nella mia cartella home:
mkdir test; cd test; for n in {1..15}; do mkdir "Folder $n"; done