Odpowiedzi:
Możesz użyć:
ls -Rt
gdzie -R
oznacza cyklicznie (zawiera podkatalogi) i -t
oznacza „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 -h
daje bardziej czytelny wynik.
ls -lrt[RhA]
. -r
odwraca porządek, pozostawiając ostatnio edytowany materiał na dole listy ...
-ila
daje prawie wszystkie potrzebne informacje. $ ls -ilaRt
ll -Rt
było dla mnie idealnym rozwiązaniem, ponieważ potrzebowałem zobaczyć pliki według daty ostatniej modyfikacji. Może to być pomocne dla innych.
ll
nie 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 -Rt
przynajmniej, tak jak ls
jest 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 ' '
find
autorem, jak autor, te argumenty -printf
to dyrektywy formatu, które można znaleźć w man find
(szukaj piątego wystąpienia printf
na 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 -r
aby 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 zsh
użytkowników możesz również użyć kwalifikatorów glob (również udokumentowanych man zshexpn
):
echo *(om)
Gdzie o
oznacza porządek sortowania, w górę i m
oznacza 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]))