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?
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?
Soluzione più semplice (più veloce):
mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
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.
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
man ls
-U Use time of file creation, instead of last modification for sorting (-t) or long output (-l).
Leggi altre domande sui tag command-line metadata macos