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

58

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

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

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

Waël
источник
нет, я не думаю, что я пытаюсь "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, которое будет отображать год, если это не текущий год, или часы и минуты, если это так.

PhilT
источник
Мне это нравится. Гораздо меньше шума на выходе и только одна буква, чтобы помнить в будущем.
Эрик
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везде. :)

G_Style
источник
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
-1

может любимый:

$ ls -altT / path / to / some / dir

象 嘉 道
источник
Как указывалось ранее , -Tопция не будет работать с GNU ls(также не указана в POSIX). Кроме того, при предоставлении кода в качестве ответа лучше объяснить, что делает каждая его часть.
Энтони Дж. - правосудие для Моники