Posso elencare i file ordinati per data aggiunta a una cartella da uno strumento da riga di comando come ls?

9

Ho bisogno di creare uno script che mostri i file nello stesso ordine della cartella Download predefinita nel dock, ordinata per Data di inserimento, prima la più recente. Non riesco a trovare l'opzione in ls .

Qualunque altro modo per farlo?

    
posta Ramiro Araujo 21.03.2013 - 17:21
fonte

4 risposte

5

Soluzione più semplice (più veloce):

mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
    
risposta data 01.08.2015 - 15:36
fonte
4

La data aggiunta viene archiviata come elemento di metadati kMDItemDateAdded e il comando mdls esporrà i dati per ogni file passato come argomento ad esso.

Quindi, per scaricare la data aggiunta per tutti i file in Download in qualunque ordine arbitrario * viene espansa dalla tua shell, puoi:

mdls -name kMDItemDateAdded ~/Downloads/*

Avrai bisogno di unire insieme una combinazione di find e sed / awk / perl / qualunque per assemblare un sostituto di ls ma forse mdfind può essere chiamato dallo script piuttosto che dover reinventare ls e analizzare quello uscita.

    
risposta data 21.03.2013 - 18:57
fonte
2

Bene, come al solito, dopo aver scritto la domanda ho iniziato a scavare per il contenuto dei metadati nei file, e ho finito per scrivere questo:

ls -a | \
grep -v '^\.$\|^\.\.$' | \
xargs -I {} mdls -name kMDItemFSName -name kMDItemDateAdded {} | \
sed 'N;s/\n//' | grep -v '(null)' | \
awk '{print $3 " " $4 " " substr($0,index($0,$7))}' | \
sort -r

Fondamentalmente: 1. elenca tutti i file 2. filtri. e .. 3. ottiene il nome e la data aggiunti, una riga dopo l'altra 4. unisce ogni due linee in 1 riga 5. estrae la data, l'ora e il nome 6. lo ordina al contrario (poiché datetime è anticipato, ordina per data / ora)

Spero che aiuti qualcun altro! :)

@ bmike in realtà, il sito mi ha imposto una restrizione per rispondere alla mia domanda solo dopo 8 ore di pubblicazione della mia domanda, a causa della mia mancanza di reputazione: D

    
risposta data 22.03.2013 - 03:56
fonte
0

man ls

 -U      Use time of file creation, instead of last modification for
         sorting (-t) or long output (-l).
    
risposta data 21.03.2013 - 17:59
fonte

Leggi altre domande sui tag