Pokaż rok podczas wyświetlania plików w bieżącym katalogu

58

Pracuję na serwerze Red Hat. Polecenia ls -llub llpodanie mi daty i godziny w formacie +"%b %-d %H:%M".

Chcę wyświetlić listę plików w taki sposób, aby rok, w którym utworzono każdy plik, pojawiał się w terminie.

Jak to możliwe?

WAEL
źródło
nie, nie sądzę, żebym spróbował „ls -lT”, nie znaleziono
WAEL 10.10
1
ls -lTjest dla Mac OSX
Kris Roofe
1
Ogólnie rzecz biorąc, Unix nie śledzi czasów tworzenia plików, a nawet gdy tak jest, lszazwyczaj nie ma sposobu na ich wyświetlenie. Ogólnie rzecz biorąc, jest to niemożliwe.
G-Man,

Odpowiedzi:

86

Możesz użyć man lsi tutaj możesz znaleźć --time-styleparametr. Lub możesz użyć:

ls --full-time.

Jan Marek
źródło
1
@bob: Całkowicie zgadzam się z Turco. Jeśli tego nie zrobisz, nikt nie będzie się martwić odpowiedzią na twoje pytanie.
The Dark Knight
5
Przykład stylu czasuls -l --time-style=+%F
sobi3ch
1
Dla tych, którzy już llustawili jako ls -lalub coś innego, ll --full-timerównież pracuj.
Meetai.com
8

ls -lwyświetli miesiąc dzień i rok - ponieważ , zgodnie ze stroną podręcznika BSD: jeśli czas modyfikacji pliku w przeszłości lub w przyszłości był dłuższy niż 6 miesięcy, zamiast pól godziny i minuty wyświetlany jest rok ostatniej modyfikacji .

Aby mieć pewność, że rok będzie zawsze wyświetlany, użyj:

ls --time-style=long-iso (GNU / Linux)

ls -lT wyświetli wyświetlanie pełnych informacji o czasie w BSD (MacOS)

Daniel Cambría
źródło
6

Ponieważ prosiłeś o rok, ls -lacłatwo jest zapamiętać, czy, podobnie jak ja, używasz ls -lacały czas. cDaje ctime które będą wyświetlane na rok, jeżeli nie jest to bieżący rok lub godziny i minuty, jeśli jest.

PhilT
źródło
Lubię to. O wiele mniej hałasu na wyjściu i tylko jedna litera do zapamiętania w przyszłości.
Eric
1
Wydaje się to zmienić zachowanie lssię daty zmieniły zamiast domyślnej daty modyfikacji .
Mateen Ulhaq
2
ls -lwyświetla datę i godzinę dla dat z ostatnich sześciu miesięcy oraz datę i rok dla innych dat. ctime może wynosić w ciągu ostatnich sześciu miesięcy tyle samo co mtime (data modyfikacji), więc ls -lacmoże wyświetlać czasy (zamiast lat) tyle, ile ls -lamoże. Poza tym, jak zauważa Mateen Ulhaq, ls -lacnie wyświetla tych samych dat co on ls -la. Ta odpowiedź jest zła.
G-Man,
2
Jak, u licha, ta „odpowiedź” uzyskała siedem głosów?
G-Man,
5

Oprócz odpowiedzi Jana Marka .... Zauważyłem, że możesz uciec tylko:

ls --full lub ls --fu

który zrobi to samo, co ls --full-timeopisał. Dzięki Stéphane Chazelas. Teraz piszę ls --fuwszędzie. :)

G_Style
źródło
1
Lub ls --fu. Długie opcje w stylu GNU można skracać, o ile nie ma dwuznaczności ( --fnie działałoby, ponieważ istnieją również - typ pliku i - format). Pamiętaj, że przyszła wersja może wprowadzić --full-permstak, więc poleganie na tym jest niebezpieczne.
Stéphane Chazelas
1
Dobrze wiedzieć! Chodzi o mniej pisania. :)
G_Style
2

Jeśli używasz busybox(wbudowane dystrybucje, np. OpenWRT, LEDE), przełącznik, którego szukasz, dotyczy -ewersji do 1.26.2 i --full-time1.27.0 i nowszych (zobacz zatwierdzenie, które to zmieniło ).

Kod Bling
źródło
1
-ewspółpracuje również z Solaris lsi ast-open's, więc w rzeczywistości jest bliższy standardowi niż GNU --full-time. Szkoda, że ​​busybox usunął go w nowszych wersjach.
Stéphane Chazelas
@ StéphaneChazelas nie wiedział o tym! Dzięki za edycję
Code Bling
-1

może ulubiony:

$ ls -altT / path / to / some / dir

象 嘉 道
źródło
Jak wcześniej wspomniano , -Topcja nie będzie działać z GNU ls(również nieokreślonym w POSIX). Podając kod jako odpowiedź, lepiej wyjaśnić, co robi każda jego część.
Anthony G - sprawiedliwość dla Moniki