Odpowiedzi:
Możesz użyć:
ls -Rt
gdzie -Roznacza cyklicznie (zawiera podkatalogi) i -toznacza „sortowanie według daty ostatniej modyfikacji”.
Aby zobaczyć listę plików posortowanych według daty modyfikacji, użyj:
ls -l -Rt
Aby to osiągnąć, można również utworzyć alias:
alias lt='ls -lht'
lt
Gdzie -hdaje bardziej czytelny wynik.
ls -lrt[RhA]. -rodwraca porządek, pozostawiając ostatnio edytowany materiał na dole listy ...
-iladaje prawie wszystkie potrzebne informacje. $ ls -ilaRt
ll -Rtbyło dla mnie idealnym rozwiązaniem, ponieważ potrzebowałem zobaczyć pliki według daty ostatniej modyfikacji. Może to być pomocne dla innych.
llnie istnieje i nie jest poleceniem. Jest to głównie alias w powłoce bash, ale nie jest zdefiniowany w większości / some /? dystrybucje Linuksa. Niektórzy definiują go jako alias ll='ls -l'plik /etc/bash.bashrc lub /etc/.bashrc. Dlatego może nie działać i może nie istnieć w systemie PO. Użyj ls -l -Rtprzynajmniej, tak jak lsjest to standardowe polecenie zdefiniowane przez posix. Lub sprecyzuj, o co ci chodziło alias ll='ls -l'; ll -Rt.
Jeśli chcesz mieć listę główną, na której wszystkie pliki są posortowane razem według daty modyfikacji, pokazując katalog, w którym się znajdują, ale nie pogrupowane według katalogu , możesz użyć tego:
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
Wynik wygląda bardzo podobnie ls -l:
-rw-r - r-- 1 root root 3892 08/11/2009 11:03:36 /usr/share/man/man1/xmllint.1.gz -rw-r - r-- 1 root root 22946 13.08.2009 11:59:20 /usr/share/man/man1/curl.1.gz -rw-r - r-- 1 root root 728 17.08.2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz -rw-r - r-- 1 root root 873 18.08.2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz -rw-r - r-- 1 root root 2552 08/19/2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz -rw-r - r-- 1 root root 9546 08/19/2009 02:02:00 /usr/share/man/man1/pidgin.1.gz -rw-r - r-- 1 root root 2201 08/19/2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz -rw-r - r-- 1 root root 926 08/19/2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz -rw-r - r-- 1 root root 18052 08/19/2009 04:11:47 /usr/share/man/man1/mono.1.gz -rw-r - r-- 1 root root 1845 08/19/2009 04:11:47 /usr/share/man/man5/mono-config.5.gz
Dla tych z Was, którzy używają Mac OS X, opcja -printf nie jest dostępna w narzędziu BSD find (pojawi się ten błąd :)find: -printf: unknown primary or operator . Na szczęście możesz zainstalować GNU znaleźć przez Homebrew (powinna być również opcja dla Fink i Macports ):
brew install findutils
Po zainstalowaniu znaleziska GNU powinny być dostępne jako gfind. Więc wszystko, co musisz zrobić, to zmienić powyższą linię na:
gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
findautorem, jak autor, te argumenty -printfto dyrektywy formatu, które można znaleźć w man find(szukaj piątego wystąpienia printfna tej stronie).
find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' 'da ci mniej więcej taki sam wynik na MacOS, używając tylko wbudowanych narzędzi
sort -raby odwrócić sortowanie i umieścić ostatnio zmodyfikowane pliki na wierzchu.
MAC OSX 2019
Jeśli nie obchodzi Cię, kiedy została utworzona, ale chcesz posortować listę, użyj tego polecenia
==> ls -t
Jeśli chcesz zamówić i zobaczyć datę i informacje o użytkowniku, użyj tego polecenia
===> ls -lt
W przypadku zshużytkowników możesz również użyć kwalifikatorów glob (również udokumentowanych man zshexpn):
echo *(om)
Gdzie ooznacza porządek sortowania, w górę i moznacza czas ostatniej modyfikacji .
Może to być przydatne, gdy jest używane w pętli for lub innym poleceniu:
for file in *(^om); do
[ -e "$file" ] || continue
# do something with file orderer from least recently modified to last modified
done
Lub połączony z innym kwalifikatorem glob:
last_modified_file=(*(om[1]))