Lista plików według daty ostatniej edycji

104

Mam katalog: /home/user/

Jak mogę wyświetlić listę wszystkich plików w tym katalogu (łącznie z tymi w podkatalogach) i uporządkować je według daty ostatniej modyfikacji?

Marty
źródło

Odpowiedzi:

172

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.

mipadi
źródło
16
Dzięki, świetnie. Dodałem tam również -l, więc mogę zobaczyć daty, więc dla każdego, kto wyszuka to później, jest to - $ ls -lRt
Marty
4
Jeśli robisz to po wyświetleniu monitu i chcesz zobaczyć ostatnio zmodyfikowane pliki, rozważ ls -lrt[RhA]. -rodwraca porządek, pozostawiając ostatnio edytowany materiał na dole listy ...
dmckee --- ex-moderator kotek
To dodane do a -iladaje prawie wszystkie potrzebne informacje. $ ls -ilaRt
Falkenfighter
Rozszerzyłem tę odpowiedź, ponieważ używanie 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.
Mus
@MusTheDataGuy 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.
KamilCuk
73

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

Mac OS X

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 ' '
Wstrzymano do odwołania.
źródło
3
Niezłe. Całe grupowanie katalogów za pomocą ls -R jest denerwujące.
El Yobo
1
Świetny kod, skrypt zajął ok. 5 sekund, aby posortować i wydrukować 13k zdjęć w wielu różnych folderach (przez Cygwin na dość wolnym komputerze).
Magnus,
Och, to jest niesamowite. Dla osób (takich jak ja), które nie są tak zaznajomione z findautorem, jak autor, te argumenty -printfto dyrektywy formatu, które można znaleźć w man find(szukaj piątego wystąpienia printfna tej stronie).
Owen Blacker
4
Dla każdego, kto chce używać tego na MacOS, ale nie chce zawracać sobie głowy instalacją findutils: 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
Jaymon
sort -raby odwrócić sortowanie i umieścić ostatnio zmodyfikowane pliki na wierzchu.
maryisdead
0

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

Mussa Charles
źródło
0

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]))
Ulysse BN
źródło