Soluzione 1:
find
attraverserà l'albero delle directory nell'ordine in cui gli elementi sono memorizzati all'interno delle voci della directory. Questo sarà (principalmente) coerente da un'esecuzione all'altra, sulla stessa macchina e sarà essenzialmente "l'ordine di creazione di file/directory" se non ci sono state eliminazioni.
Tuttavia, alcuni file system riordineranno le voci della directory come parte delle operazioni di compattazione o quando la dimensione della voce deve essere espansa, quindi c'è sempre una piccola possibilità che l'ordine "grezzo" cambi nel tempo. Se desideri un ordine coerente, alimenta l'output attraverso una fase di smistamento aggiuntiva.
Soluzione 2:
Non dovresti fare affidamento su un particolare ordine di output da find
e invece dovrebbe usare sort
e altri mezzi per controllare specificamente l'ordine.
Soluzione 3:
Lavoro in UNIX/Linux rispettivamente dal 1984/1991 e il primo comando che mi è stato insegnato è stato find. Linux/GNU ha messo praticamente tutto ciò di cui hai bisogno nell'attuale comando find, quindi giocaci un po'.
Ecco alcuni suggerimenti utili per ordinare l'output di find. L'opzione -printf offre molte opzioni per abilitare un ordinamento più complesso e una presentazione delle informazioni sui file. È il migliore per problemi come questo. Gioca con esso per vedere cosa funzionerà per te. Usando -printf puoi personalizzare e delimitare i risultati nel modo desiderato. Questo aiuta un po 'quando è necessario post-elaborare i risultati. Spero che questo aiuti qualcuno.
-
Se usi -ls e vuoi ordinare per nome file, l'undicesimo campo è il nome del file, quindi puoi fare quanto segue. Anche l'opzione sort -k può richiedere più campi su cui ordinare.
trova /percorso -ls | ordina -k11
-
Se si desidera un controllo più preciso, ad esempio ordinare per data/ora in ordine crescente o decrescente, utilizzare l'opzione -printf "". Consulta il manuale per maggiori dettagli, ma quello che segue è un esempio che verrà stampato con frazioni di secondo, quindi è molto preciso.
ESEMPIO DI DATA/ORA:2016-09-17+12:09:57.9013929800
find /path -printf "%T+ %p\n" | sort -n # Ascending
find /path -printf "%T+ %p\n" | sort -nr # Descending
Un altro modo per farlo senza caratteri nella stringa data/ora è.
ESEMPIO DI DATA/ORA:20160917120013.8101685040
find /path -printf "%AY%Am%Ad%AH%AM%AS %p\n" | sort -n