Почему «ls -all» показывает время для некоторых файлов, но только год для других?


32

Если вы выполните ls -allкоманду, у некоторых файлов или каталогов будет год, а у других - время? Почему одни показывают год, а другие показывают время? Является ли время представителем времени создания файла?

введите описание изображения здесь


15
Вы используете -all. Обратите внимание, что последняя буква L является излишней, потому что она allозначает не «все», а « -a(показать все файлы)» и -l(формат длинного списка). Все вместе, ls -alэто то же самое, что вы используете.
Федорки

Ответы:


35

По умолчанию временные метки файлов перечислены в сокращенной форме с использованием даты, например «30 марта 2002 года», для не недавних отметок времени, а также даты без года и времени, например «30 марта 23:45», для последних отметок времени. Этот формат может меняться в зависимости от текущей локали, как описано ниже.

Отметка времени считается недавней, если ей менее шести месяцев, и она не датирована в будущем. Если отметка времени, датированная сегодня, не указана в последней форме, отметка времени будет в будущем, что означает, что у вас, вероятно, есть проблемы с перекосом часов, которые могут привести к поломке программ, например make, использующих отметки времени файла.

Источник: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps.

Проиллюстрировать:

$ 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
Стоит отметить, что времена в будущем также будут показывать год, а не время. Это может произойти, если вы обмениваетесь файлами между узлами, где часы не синхронизированы.
Kasperd

24

Представленное время является временем модификации. Обратите внимание, что ls -allэто то же самое ls -l -a, что отличается от ls --all. В lвашем примере нет причин использовать double . Если вы хотите увидеть время модификации для каждого файла, вы можете использовать ls -al --full-time.


4
В GNU lsдля обычного использования --time-style=long-isoможет быть более полезным. --full-timeпоказывает секунды, включая девять цифр (!) после десятичной точки, которая обычно не нужна.
Пабук

1
--full-timeподразумевает -l, так что вы можете просто использовать ls -a --full-time.
Касперд

6

Если дата / время, которое он пытается отобразить, произошли за последние шесть месяцев, lsотображаются дата и время. Если это больше, чем шесть месяцев назад или в будущем, lsотображается дата и год.

Как указано в других ответах,

  • ls -llэквивалентно ls -l, и
  • ls -allэквивалентно ls -al, что эквивалентно ls -a -l, ls -l -aи ls -la.

При -lвыборе этой опции lsотображается дата / время изменения файлов (включая каталоги, поскольку «все является файлом»), если только

  • -c также указывается, в этом случае он отображает время изменения, или
  • -u также указывается, в этом случае он отображает время доступа.

См. Ls (1) для получения дополнительной информации.


3

Эти выходные данные настроены на максимальное информационное содержание: когда время «достаточно близко» к текущему времени (не совсем точно, но я предполагаю, что в течение шести месяцев) год будет исключен, а вместо этого будет показано время дня. В противном случае год показан. Это значение по умолчанию в основном потому, что вы, вероятно, не слишком заботитесь о точном времени суток, когда что-то было изменено, если это время было много лет назад. В GNU coreutils lsесть --time-styleвозможность явно контролировать это.


0

Ты что-то понял? Это просто время в часах 20 октября, то есть сегодня, это означает, что оно покажет последний раз, когда вы изменили файл, но в другие дни, которые не являются сегодня, будет отображаться только дата без времени.

Оказывается, это не так, как ответил Томас. Я просто пытался использовать метод дедукции, не уверен, что в конце концов получу правильное заключение.


1
Aug 6 19:50 .config, Aug 6 19:48 VNCHOWTO.
G-Man говорит: «Восстановите Монику»

Отлично, я просто сделал вывод, просматривая даты и соединяя точки, что не всегда может быть идеальным выводом.
Рафаэль Кампос Нунес
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.