Показать год при перечислении файлов в текущем каталоге


58

Я работаю на сервере Red Hat. Команды ls -lили llдавая мне дату и время в формате +"%b %-d %H:%M".

Я хочу перечислить файлы таким образом, чтобы год, когда был создан каждый файл, отображался в пределах даты.

Как это возможно?


нет, я не думаю, что я пытаюсь "ls -lT" его не найдено
WAEL

1
ls -lTдля Mac OSX
Крис Рооф

1
В общем, Unix не отслеживает время создания файлов, и, даже когда это происходит, lsобычно не имеет способа его отображения. Так что, в общем, это невозможно.
G-Man говорит: «Восстановите Монику»

Ответы:


86

Вы можете использовать man lsи здесь вы можете найти --time-styleпараметр. Или вы можете использовать:

ls --full-time,


1
@ Боб: Полностью согласен с Турко. Если вы этого не сделаете, никто не будет беспокоиться об ответе на ваш вопрос.
Темный рыцарь

5
Пример для стиля времениls -l --time-style=+%F
sobi3ch

1
Для тех, кто уже llнастроен как ls -laили что-то еще, ll --full-timeтоже работают.
Meetai.com

8

ls -lбудет отображаться месяц и год - с тех пор , согласно справочной странице BSD: если время изменения файла превышает 6 месяцев в прошлом или будущем, то вместо полей часа и минуты отображается год последней модификации. ,

Итак, чтобы убедиться, что год будет отображаться всегда, используйте:

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

ls -lT отобразит полную информацию о времени в BSD (MacOS)


6

Поскольку вы спросили год, ls -lacего легко запомнить, если, как и я, вы используете ls -laвсе время. Это cдает вам ctime, которое будет отображать год, если это не текущий год, или часы и минуты, если это так.


Мне это нравится. Гораздо меньше шума на выходе и только одна буква, чтобы помнить в будущем.
Эрик

1
Это , кажется , чтобы изменить поведение lsна сегодняшний день изменился , а не по умолчанию даты изменений .
Матин Улхак,

2
ls -lотображает дату и время для дат за последние шесть месяцев, а также дату и год для других дат. ctime может составлять в последние шесть месяцев столько же, сколько mtime (дата изменения), поэтому ls -lacможет отображать время (а не годы) столько, сколько ls -laможет. Кроме того, как указывает Матин Улхак, ls -lacне отображаются те же даты, что ls -laи у. Этот ответ неверен.
G-Man говорит: «Восстановите Монику»

2
Как в мире этот «ответ» получил семь голосов?
G-Man говорит: «Восстановите Монику»

5

В дополнение к ответу Яна Марека ... Я заметил, что вы можете сойти с рук просто:

ls --full или ls --fu

который будет делать то же самое, ls --full-timeчто он описал. Спасибо Стефану Шазеласу. Теперь я печатаю ls --fuвезде. :)


1
Или ls --fu. Длинные опции в стиле GNU могут быть сокращены, если нет двусмысленности ( --fне сработает, так как есть также --file-type и --format). Обратите внимание, что в будущей версии может появиться версия, на --full-permsкоторую опасно полагаться.
Стефан Шазелас

1
Приятно знать! Все о наборе текста меньше. :)
G_Style

2

Если вы используете busybox(встроенные дистрибутивы, например, OpenWRT, LEDE), вам нужен переключатель -eдля версий до 1.26.2 и --full-time1.27.0 и выше (см. Коммит, который его изменил ).


1
-eтакже работает с Solaris lsи ast-open, поэтому он ближе к стандарту, чем GNU --full-time. Позор, что busybox удалил его в более новых версиях.
Стефан Шазелас

@ Стефан Чазелас этого не знал! Спасибо за редактирование
Code Bling

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