Как отобразить измененное время файла?

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

Я придумал:

ls -l $filename | cut -d ' ' -f '6-8'

Какие выводы:

Jul 26 15:05

Хотя я хотел бы постараться не анализировать ls, также было бы полезно иметь год там.

Идеально я хотел бы видеть вывод, подобный выводу по умолчанию date команда.

Tue Jul 26 15:20:59 BST 2016

Что другие полезные методы доступны?

35
задан 26 July 2016 в 07:23

2 ответа

Не использовать ls, это - задание для stat:

stat -c '%y' filename

-c позволяет нам для получения определенного вывода, здесь %y получит нас в прошлый измененный раз файла в человекочитаемом формате. Получить время в секундах начиная с использования Эпохи %Y:

stat -c '%Y' filename

Если Вы хотите имя файла также, использовать %n:

stat -c '%y : %n' filename
stat -c '%Y : %n' filename

Установите спецификаторы формата для удовлетворения потребности. Проверить man stat.

Пример:

% stat -c '%y' foobar.txt
2016-07-26 12:15:16.897284828 +0600

% stat -c '%Y' foobar.txt
1469513716

% stat -c '%y : %n' foobar.txt
2016-07-26 12:15:16.897284828 +0600 : foobar.txt    

% stat -c '%Y : %n' foobar.txt
1469513716 : foobar.txt

Если Вы хотите вывод как Tue Jul 26 15:20:59 BST 2016, используйте время Эпохи, как введено для date:

% date -d "@$(stat -c '%Y' a.out)" '+%a %b %d %T %Z %Y'
Tue Jul 26 12:15:21 BDT 2016

% date -d "@$(stat -c '%Y' a.out)" '+%c'               
Tue 26 Jul 2016 12:15:21 PM BDT

% date -d "@$(stat -c '%Y' a.out)"
Tue Jul 26 12:15:21 BDT 2016

Проверить dateспецификаторы формата для удовлетворения потребностей. Посмотрите man date также.

46
ответ дан 23 November 2019 в 00:26

Я попробовал

ls -l $filename | cut -d ' ' -f '6-8'

но если дата - меньше чем 10, она пропускает время. Это из-за дополнительного пространства перед датой, если меньше чем 10. Попробуйте это:

filename="test.txt"
ls -l $filename | awk -F ' ' '{print $6" "$7" "$8}'

Команда awk печатает поля, разделенные всеми пробелами (-F ''). Надеюсь, что это работает. Я знаю, что это не отвечает на исходный вопрос, но просто разъяснение по поводу команды ls для просто даты и времени. Google "человечность получает дату и время файла" это, при списке этого вопроса наверху который является тем, что я искал, так как мне не требуется год также. В течение года, даты и времени, Вы могли попробовать одну из команд ниже. %m печатает число месяца. %b печатает сокращение месяца: Отбросьте %H: % M, если Вам не требуются час и минуту. %-d не печатает начальный нуль в течение дня месяца.

date -r $filename +"%Y %m %-d %H:%M"
date -r $filename +"%y %m %-d %H:%M"
date -r $filename +"%Y %b %-d %H:%M"
date -r $filename +"%y %b %-d %H:%M"
1
ответ дан 23 November 2019 в 00:26

Другие вопросы по тегам:

Похожие вопросы: