Почему «ls -all» показывает время для некоторых файлов, но только год для других?
32
Если вы выполните ls -allкоманду, у некоторых файлов или каталогов будет год, а у других - время? Почему одни показывают год, а другие показывают время? Является ли время представителем времени создания файла?
Вы используете -all. Обратите внимание, что последняя буква L является излишней, потому что она allозначает не «все», а « -a(показать все файлы)» и -l(формат длинного списка). Все вместе, ls -alэто то же самое, что вы используете.
Федорки
Ответы:
35
По умолчанию временные метки файлов перечислены в сокращенной форме с использованием даты, например «30 марта 2002 года», для не недавних отметок времени, а также даты без года и времени, например «30 марта 23:45», для последних отметок времени. Этот формат может меняться в зависимости от текущей локали, как описано ниже.
Отметка времени считается недавней, если ей менее шести месяцев, и она не датирована в будущем. Если отметка времени, датированная сегодня, не указана в последней форме, отметка времени будет в будущем, что означает, что у вас, вероятно, есть проблемы с перекосом часов, которые могут привести к поломке программ, например make, использующих отметки времени файла.
Стоит отметить, что времена в будущем также будут показывать год, а не время. Это может произойти, если вы обмениваетесь файлами между узлами, где часы не синхронизированы.
Kasperd
24
Представленное время является временем модификации. Обратите внимание, что ls -allэто то же самое ls -l -a, что отличается от ls --all. В lвашем примере нет причин использовать double . Если вы хотите увидеть время модификации для каждого файла, вы можете использовать ls -al --full-time.
В 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) для получения дополнительной информации.
Эти выходные данные настроены на максимальное информационное содержание: когда время «достаточно близко» к текущему времени (не совсем точно, но я предполагаю, что в течение шести месяцев) год будет исключен, а вместо этого будет показано время дня. В противном случае год показан. Это значение по умолчанию в основном потому, что вы, вероятно, не слишком заботитесь о точном времени суток, когда что-то было изменено, если это время было много лет назад. В GNU coreutils lsесть --time-styleвозможность явно контролировать это.
Ты что-то понял? Это просто время в часах 20 октября, то есть сегодня, это означает, что оно покажет последний раз, когда вы изменили файл, но в другие дни, которые не являются сегодня, будет отображаться только дата без времени.
Оказывается, это не так, как ответил Томас. Я просто пытался использовать метод дедукции, не уверен, что в конце концов получу правильное заключение.
-all
. Обратите внимание, что последняя буква L является излишней, потому что онаall
означает не «все», а «-a
(показать все файлы)» и-l
(формат длинного списка). Все вместе,ls -al
это то же самое, что вы используете.Ответы:
Источник: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatting-file-timestamps.
Проиллюстрировать:
источник
Представленное время является временем модификации. Обратите внимание, что
ls -all
это то же самоеls -l -a
, что отличается отls --all
. Вl
вашем примере нет причин использовать double . Если вы хотите увидеть время модификации для каждого файла, вы можете использоватьls -al --full-time
.источник
ls
для обычного использования--time-style=long-iso
может быть более полезным.--full-time
показывает секунды, включая девять цифр (!) после десятичной точки, которая обычно не нужна.--full-time
подразумевает-l
, так что вы можете просто использоватьls -a --full-time
.Если дата / время, которое он пытается отобразить, произошли за последние шесть месяцев,
ls
отображаются дата и время. Если это больше, чем шесть месяцев назад или в будущем,ls
отображается дата и год.Как указано в других ответах,
ls -ll
эквивалентноls -l
, иls -all
эквивалентноls -al
, что эквивалентноls -a -l
,ls -l -a
иls -la
.При
-l
выборе этой опцииls
отображается дата / время изменения файлов (включая каталоги, поскольку «все является файлом»), если только-c
также указывается, в этом случае он отображает время изменения, или-u
также указывается, в этом случае он отображает время доступа.См. Ls (1) для получения дополнительной информации.
источник
Эти выходные данные настроены на максимальное информационное содержание: когда время «достаточно близко» к текущему времени (не совсем точно, но я предполагаю, что в течение шести месяцев) год будет исключен, а вместо этого будет показано время дня. В противном случае год показан. Это значение по умолчанию в основном потому, что вы, вероятно, не слишком заботитесь о точном времени суток, когда что-то было изменено, если это время было много лет назад. В GNU coreutils
ls
есть--time-style
возможность явно контролировать это.источник
Ты что-то понял? Это просто время в часах 20 октября, то есть сегодня, это означает, что оно покажет последний раз, когда вы изменили файл, но в другие дни, которые не являются сегодня, будет отображаться только дата без времени.
Оказывается, это не так, как ответил Томас. Я просто пытался использовать метод дедукции, не уверен, что в конце концов получу правильное заключение.
источник
Aug 6 19:50 .config
,Aug 6 19:48 VNCHOWTO
.