Не используйте 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
, используйте время Epoch в качестве ввода для 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
тоже.
ls
он непоследовательно реализован в разных системах и поэтому никогда не должен использоваться для какой-либо автоматизации. Вместо этого используйте такие команды, какstat
иfind
при написании сценариев.