Jak mogę posortować dane wyjściowe „ls” według daty ostatniej modyfikacji?


Odpowiedzi:


1636
ls -t

lub (dla rewersu, najnowsze u dołu):

ls -tr

lsStrona podręcznika opisuje to bardziej szczegółowo, i wymienia inne opcje.


312
ls -haltjest human readable, show hidden, print details, sort by date.
Evgeni Sergeev

6
Na wypadek, gdyby ktoś się zastanawiał, zarówno argumenty , jak -ti -rargumenty są określone w rozdziale o lsstandardzie POSIX , więc powinny być kompatybilne z różnymi Uniksami.
Mark Amery

5
ls -lltza wyświetlanie znacznika daty i czasu wraz z sortowaniem
Harshul Pandav

4
Tak, jest to możliwe
Ashraf.Shk786,

6
@EvgeniSergeev DONT MEMORIZE ls -haltprosty błąd może spowodować awarię serwera! linux.die.net/man/8/halt
Izaak

148

Spróbuj tego: ls -ltr. To da ci ostatnie do końca listy


Użyłem tego, aby uzyskać listę plików w moim repozytorium Git według daty ostatniej edycji. ls -alt $(git ls-files -m)Dzięki!
NobleUplift

44

Aby uzyskać pełną odpowiedź tutaj, używam: ls -lrth

Umieść to w skrypcie startowym /etc/bashrci przypisz taki alias: alias l='ls -lrth'Zrestartuj terminal, a powinieneś być w stanie wpisać li zobaczyć długą listę plików.


14
Możesz także zadzwonić, source /etc/bashrcjeśli chcesz dodać go do swojego repertuaru podczas biegu.
cwallenpoole

1
Możesz również dodać go ~/.bash_aliasestylko dla swojego użytkownika (można utworzyć plik, jeśli jeszcze nie istnieje
Dinei 24.04.2018

29

Używam kiedyś tego:

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -tr

lub

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -ltr

aby rekurencyjnie sprawdzić, które pliki zostały zmodyfikowane w ciągu ostatnich 5 minut.

... lub teraz, w najnowszej wersji GNU znajdź :

find . -type f -mmin -5 -exec ls -ltr {} +

... a nawet nie ograniczając się do plików :

find . -mmin -5 -exec ls -ltrd {} +

(zwróć uwagę na -dprzełącznik, aby lsnie wyświetlać zawartości katalogów)

Solidniejszy sposób?

Spójrz na mój anser, aby znaleźć i posortować według daty modyfikacji


Przez rekurencyjnie masz na myśli, że zawiera listę wszystkich plików w podkatalogach, czyż nie ma już przełącznika, aby to zrobić?
jiggunjer

@ jiggunjer ls -Rltrposortuje według katalogu , a następnie według dat, find -type f -mmin -5 -exec ls -ltr {} +po prostu wydrukuje pliki zmodyfikowane w ciągu ostatnich 5 minut, posortowane według daty, niezależnie od drzewa katalogów!
F. Hauri,

Zauważ, że to nie zadziała, jeśli lista plików jest zbyt długa, aby można ją było przekazać jako jedno wywołanie powłoki ls( unix.stackexchange.com/a/118200/27186 ) - wtedy zobaczysz jedną posortowaną wiązkę plików, a następnie inną posortowałem kilka plików itp., ale cała lista nie zostanie posortowana. Zobacz superuser.com/questions/294161/…, aby posortować dłuższe listy z funkcją find.
młot

@unhammer Masz rację, aby to działało bezpiecznie, zobacz mój niedawny anser do Unix / Linux znajdź i sortuj według daty modyfikacji
F. Hauri


15

Mnemoniczny

Nie ignoruj ​​wpisów zaczynających się od .i sortuj według daty (najpierw najnowsze):

ls -at

Nie ignoruj ​​wpisów zaczynających się od .i odwróć sortowanie według daty (od najstarszych):

ls -art

Aby nie ignorować wpisów zaczynających się od ., użyj długiego formatu listy i sortuj według daty (najpierw najnowsze):

ls -alt

Aby drukować rozmiary czytelne dla ludzi, nie ignoruj ​​wpisów zaczynających się od ., użyj długiego formatu listy i sortuj według daty (najpierw najnowsze) (uwaga @EvgeniSergeev):

ls -halt

ale uważaj na ostatni , ponieważ zwykły błąd może spowodować awarię serwera ... (uwaga @Isaac)


14

Znajdź wszystkie pliki w systemie plików, które zostały zmodyfikowane maksymalnie 3 * 24 godziny (3 dni) temu do teraz:

find / -ctime 3

10

Aby wyświetlić 10 najnowszych posortowanych według daty, używam czegoś takiego:

ls -t ~/Downloads | head -10

lub pokazać najstarszy

ls -tr ~/Downloads | tail -10

to giv ls -t head -2i ls -tr | tail -2daje taki sam wynik, opcjonalnie (-t / -tr) należy utrzymywać stałe i modyfikowane ogon / głowica, lub odwrotnie, modifing obu jest jak modyfing nic
DDS

7

Używając tylko bardzo podstawowych poleceń Uniksa:

ls -nl | sort -k 8,8n -k 6,6M

Działa to w systemie Linux; kolumna 8 to „n” (numerycznie), kolumna 6 to „M”, miesiąc.

Jestem nowy w sort, więc ta odpowiedź może prawdopodobnie zostać poprawiona. Nie wspominając o tym, że potrzebuje dodatkowych opcji lsi sortużywać dokładnych znaczników czasu, ale nie wszyscy będą tego potrzebować.


5
Podejrzewam, że twoja odpowiedź nie uzyskała większego głosu, ponieważ analizuje ona wynik działania ls - zobacz kanoniczny argument przeciwko takiemu
tytuł
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.