Dlaczego „ls-all” pokazuje czas dla niektórych plików, a tylko rok dla innych?


32

Jeśli wydasz ls -allpolecenie, niektóre pliki lub katalogi mają rok, a niektóre mają czas? Dlaczego jedni pokazują rok, a inni czas? Czy czas jest reprezentatywny dla czasu utworzenia pliku?

wprowadź opis zdjęcia tutaj


15
Używasz -all. Zauważ, że ostatnie L jest zbędne, ponieważ allnie oznacza słowa „wszystkie”, ale oznacza -a(pokaż wszystkie pliki) i -l(format długiej listy). Wszystko razem ls -aljest takie samo jak to, czego używasz.
fedorqui

Odpowiedzi:


35

Domyślnie znaczniki czasu plików są wymienione w formie skróconej, przy użyciu daty takiej jak „30 marca 2002 r.” W przypadku nieaktualnych znaczników czasu oraz daty bez roku i godziny jak „30 marca 23:45” w przypadku ostatnich znaczników czasu. Ten format może się zmienić w zależności od bieżących ustawień regionalnych, jak opisano poniżej.

Znacznik czasu uważa się za najnowszy, jeśli ma mniej niż sześć miesięcy i nie jest datowany w przyszłości. Jeśli znacznik czasu z dnia dzisiejszego nie jest wymieniony w najnowszej formie, znacznik czasu jest w przyszłości, co oznacza, że ​​prawdopodobnie masz problemy z przesunięciem zegara, które mogą zepsuć programy, takie jak uzależnienie plików od znaczników czasu.

Źródło: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps

Ilustrować:

$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21  2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21  2015 file7

4
Warto zauważyć, że czasy w przyszłości pokażą także rok, a nie czas. Może się to zdarzyć, jeśli wymienisz pliki między hostami, na których zegar nie jest zsynchronizowany.
kasperd

24

Przedstawiony czas to czas modyfikacji. Pamiętaj, że ls -allto to samo ls -l -a, co różni się od ls --all. W ltwoim przykładzie nie ma powodu, aby używać podwójnego . Jeśli chcesz zobaczyć czas modyfikacji każdego pliku, możesz użyć ls -al --full-time.


4
W GNU lsdo normalnego użytku --time-style=long-isomoże być bardziej przydatne. --full-timepokazuje sekundy, w tym dziewięć cyfr (!) po kropce dziesiętnej, co zwykle nie jest potrzebne.
pabouk

1
--full-timeoznacza -l, że możesz po prostu użyć ls -a --full-time.
kasperd

6

Jeśli data / godzina, którą próbuje wyświetlić, przypadają w ciągu ostatnich sześciu miesięcy, lswyświetla datę i godzinę. Jeśli minęło więcej niż sześć miesięcy - lub jeśli będzie w przyszłości - lswyświetla datę i rok.

Jak stwierdzono w innych odpowiedziach,

  • ls -lljest równoważne z ls -li
  • ls -alljest równa ls -al, co jest równoważne ls -a -l, ls -l -ai ls -la.

Z tą -lopcją lswyświetla datę / godzinę modyfikacji plików (w tym katalogów, ponieważ „wszystko jest plikiem”), chyba że

  • -c jest również określony, w którym to przypadku wyświetla czas zmiany, lub
  • -u jest również określony, w którym to przypadku wyświetla czas dostępu.

Aby uzyskać więcej informacji, zobacz ls (1) .


3

To wyjście jest dostrojone pod kątem maksymalnej zawartości informacji: kiedy czas jest „wystarczająco blisko” do aktualnego czasu (nie do końca pewny, ale zgaduję w ciągu sześciu miesięcy), rok upływa, a zamiast tego pokazywana jest pora dnia. W przeciwnym razie wyświetlany jest rok. Jest to ustawienie domyślne, ponieważ prawdopodobnie nie przejmujesz się zbytnio dokładną porą dnia, kiedy coś zostało zmodyfikowane, jeśli to lata temu. Coreutils GNU lsma --time-styleopcję, aby to jawnie kontrolować.


0

Czy zdałeś sobie sprawę z czegoś? Pojawia się godzina 20 października, czyli dzisiaj, oznacza to, że pokaże ostatnią modyfikację pliku, ale w inne dni, które nie są dzisiaj, pokaże tylko datę bez godziny.

Okazuje się, że tak nie jest, jak odpowiedział Thomas. Po prostu próbowałem zastosować metodę dedukcyjną, nie mając jednak pewności, że wyciągam prawidłowe wnioski.


1
Aug 6 19:50 .config, Aug 6 19:48 VNCHOWTO.
G-Man mówi „Reinstate Monica”

Idealnie, właśnie dokonałem dedukcji, szukając dat i łącząc punkty, co nie zawsze może być idealnym zakończeniem.
Rafael Campos Nunes,
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.