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?


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.


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)


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.


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. :)


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 ).


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

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.