Muszę zbudować skrypt pokazujący pliki w tej samej kolejności, co domyślny folder Pobrane w doku, uporządkowany według Data dodania, najpierw najnowszy. Nie mogę znaleźć opcji w ls
.
Jakiś inny sposób to zrobić?
Muszę zbudować skrypt pokazujący pliki w tej samej kolejności, co domyślny folder Pobrane w doku, uporządkowany według Data dodania, najpierw najnowszy. Nie mogę znaleźć opcji w ls
.
Jakiś inny sposób to zrobić?
Odpowiedzi:
Prostsze (szybsze) rozwiązanie:
mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
Dodana data jest przechowywana jako element metadanych, kMDItemDateAdded
a mdls
polecenie ujawni dane dla każdego pliku przekazanego jako argument.
Aby więc zrzucić datę dodaną dla wszystkich plików w Pobranych w dowolnej kolejności * rozszerzanej przez powłokę, możesz:
mdls -name kMDItemDateAdded ~ / Pobieranie / *
Będziesz musiał zhakować kilka kombinacji find i sed / awk / perl / cokolwiek, aby skompletować zamiennik, ls
ale być może mdfind może zostać wywołany przez skrypt, zamiast potrzeby ponownego tworzenia ls
i analizowania tego wyniku.
Cóż, jak zwykle, po napisaniu pytania zacząłem kopać zawartość metadanych w plikach i skończyłem pisać:
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
Zasadniczo: 1. wypisz wszystkie pliki 2. odfiltruj. i .. 3. pobiera nazwę i datę dodania, jedna linia po drugiej 4. łączy co dwie linie w 1 linię 5. wyodrębnia datę, godzinę i nazwę 6. sortuje je w odwrotnym kierunku (ponieważ data i godzina są z góry, sortuje według datetime)
Mam nadzieję, że pomoże to komuś innemu! :)
@ bmike, w rzeczywistości strona narzuciła mi ograniczenie, aby odpowiedzieć na moje pytanie dopiero po 8 godzinach od opublikowania mojego pytania, z powodu braku mojej reputacji: D
ls -A
zamiast -a
, abyś nie musiał grep -v
za .
i ..
.
człowiek ls
-U Use time of file creation, instead of last modification for sorting (-t) or long output (-l).