Jak uzyskać pliki znalezione za pomocą wiersza polecenia „znajdź” uporządkowane według daty modyfikacji w OS X?

13

Używając terminala Mac OS X, jak napisać findpolecenie, które porządkuje wyniki według daty modyfikacji (od najnowszej)?

Istnieją już podobne pytania, ale odnoszą się one do GNU findi POSIX, ale nie wiem, czy Mac OS X to GNU lub POSIX, czy coś innego.

zadam
źródło

Odpowiedzi:

16

OS X jest w pełni zgodny z POSIX .

Coś takiego powinno zrobić:

find . -type f -name "*.txt" -print0 | xargs -0 ls -tl

Niektóre uwagi:

  • -tOpcja w lssortuje wg mtime.
  • xargssłuży do przekazania nazw plików jako argumentu ls. Należy pamiętać, że trzeba użyć -print0w findi -0w xargsjeśli masz pliki ze spacjami w ich nazwach. Ponadto maksymalna liczba argumentów jest ograniczona przez ARG_MAXzmienną . Aby dowiedzieć się, ile ich jest, wpisz getconf ARG_MAX.
  • Możesz dostarczyć, -raby odwrócić kolejność sortowania (→ najpierw najstarsze pliki)
  • Inne findi lsopcje są - jak zwykle - przedstawione w instrukcjach ( man findlub man ls).
slhck
źródło
ls -ltrodwrócić kolejność.
Daniel Beck
Xe oczywiście sortuje je tylko w grupach ARG_MAXznaków (nieco mniej niż) nazw plików.
JdeBP
Tak, dzięki za dodanie @JdeBP i Daniela. getconf ARG_MAXpokaże ten numer.
slhck
ah mój problem polega na tym, że używam tego polecenia w skrypcie jabłkowym i wykorzystałem wynik do odczytania zawartości tego pliku. Ale teraz wynik zawiera informacje o dacie, a nie tylko nazwę pliku: wykonaj skrypt powłoki "find / Users / akw / Library / Preferences / ByHost / -name 'com.apple.windowserver *' -print0 | xargs -0 ls -tl | head -1 ”zwraca to ->” -rw ------- @ 1 akw staff 5512 19 czerwca 07:52 /Users/akw/Library/Preferences/ByHost//com.apple.windowserver.1FC3A841-2C0C- 5F48-B746-1DEE064F6D12.plist "
zadam
@zadam następnie użyj ls -tzamiast ls -tl. -lDaje długą listę łącznie z datami. Nie wiedziałem, co dokładnie próbujesz zrobić, przepraszam za to - założyłem, że też chciałbyś to zobaczyć mtime.
slhck