Показуйте рік, перераховуючи файли в поточному каталозі


58

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

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

Як це можливо?


ні, я не думаю, що я намагаюся "ls -lT" його не знайдено
WAEL

1
ls -lTє для mac osx
Kris Roofe

1
Загалом, Unix не відслідковує час створення файлів, і навіть коли це відбувається, lsяк правило, немає способу його відображення. Тож загалом це неможливо.
G-Man

Відповіді:


86

Ви можете використовувати man lsі тут ви можете знайти --time-styleпараметр. Або ви можете використовувати:

ls --full-time.


1
@bob: Повністю згоден з Турко. Якщо ви цього не зробите, ніхто не збирається заважати відповідати на ваше запитання.
Темний лицар

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на сьогоднішній день, а не змінити дату за замовчуванням .
Mateen Ulhaq

2
ls -lвідображає дату та час для дат, які були за останні півроку, а також дата та рік для інших дат. ctime може бути за останні півроку стільки ж, скільки може mtime (дата модифікації), тим самим ls -lacможе відображати кількість разів (замість років) стільки, скільки ls -laможе. Крім того, як зазначає Мейтін Ульхак, ls -lacне відображаються ті самі дати, що і ls -laвони. Ця відповідь неправильна.
G-Man

2
Як у світі ця «відповідь» отримала сім голосів?
G-Man

5

На додаток до відповіді Яна Марека .... Я помітив, що ви можете піти просто:

ls --повне або 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для версій до --full-time1,26,2 та 1,27,0 і вище (див. Комісію, яка його змінила ).


1
-eтакож працює з Solaris lsі ast-open, тому він насправді ближче до стандарту, ніж GNU --full-time. Прикро, що зайнятий скринька видалив його в нових версіях.
Стефан Шазелас

@ StéphaneChazelas цього не знав! Дякую за редагування
Code Bling

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.