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.