2014-04-03 12:45:56 +0000 2014-04-03 12:45:56 +0000
166
166

Получить последнюю измененную дату файла в Linux

Я новичок в Linux. Я использую командную строку. Пытаюсь просмотреть последнюю измененную дату файла. Как это сделать в Linux из командной строки?

Ответы (7)

147
147
147
2015-09-21 10:22:09 +0000

Как уже упоминалось @edvinas.me, stat сообщает вам различную информацию о файле, включая дату последнего изменения.

Сначала я перепутал с Modify и Change, просто чтобы прояснить, stat выходные списки:

  • Access показывает время последнего доступа к данным (e. g. read).
  • Modify показывает время последнего изменения данных.
  • Change показывает время последнего изменения статуса файла.

Например:

~ $ touch foo
~ $ stat foo
File: ‘foo’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fc01h/64513d Inode: 410397 Links: 1
Access: (0644/-rw-r--r--) Uid: (80972/ etomort) Gid: (18429/ eem_tw)
Access: 2015-09-21 12:06:11.343616258 +0200
Modify: 2015-09-21 12:06:11.343616258 +0200
Change: 2015-09-21 12:06:11.343616258 +0200
Birth: -

~ $ echo "Added bar to foo file" >> foo
~ $ stat foo
File: ‘foo’
Size: 42 Blocks: 8 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 410654 Links: 1
Access: (0644/-rw-r--r--) Uid: (80972/ etomort) Gid: (18429/ eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:09:31.302713093 +0200
Birth: -

~ $ chmod 444 foo
~ $ stat foo
File: ‘foo’
Size: 42 Blocks: 8 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 410654 Links: 1
Access: (0444/-r--r--r--) Uid: (80972/ etomort) Gid: (18429/ eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:10:16.040310543 +0200
Birth: -
69
69
69
2014-04-03 12:47:41 +0000

Для этого используйте команду stat:

$ stat file
```.
40
40
40
2017-08-31 01:04:43 +0000

Другим более гибким способом является использование date -r. От man date:

-r, --reference=FILE
       display the last modification time of FILE

Преимущество этого способа заключается в том, что он позволяет задавать выходной формат, например

$ date -r foo
Thu Aug 31 10:36:28 AEST 2017
$ date -r foo -R
Thu, 31 Aug 2017 10:36:28 +1000
$ date -r foo -u
Thu Aug 31 00:36:28 UTC 2017
$ date -r foo +%s
1504139788
```.
17
17
17
2015-11-16 05:43:54 +0000

ls -l должен сделать работу.

Пример:

#> ls -l /home/TEST/
total 16

-rw-r--r-- 1 rfmas1 nms 949 Nov 16 12:21 create_nd_lists.py

-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 enb_list

-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 nb_list

-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 nodes_ip.txt

-rw-r--r-- 1 rfmas1 nms 0 Nov 16 12:35 rnc_list
3
3
3
2019-08-14 16:24:39 +0000

Строительство из_ @Adam Taylor ‘s комментарий в @phoops ’s ответ и @Sparhawk ’s ответ.

Чтобы конкретно просто получить дату (используя октябрь 3, 2019 для примера, потому что это был мой последний день рождения, вот мое Venmo, если вы чувствуете, привело к благословению меня финансово: @levi_uzodike)

  • stat -c %y file | cut -d' ' -f1 даст вам 2019-10-03
  • date +%F -r file даст вам 2019-10-03
  • date +%D -r file даст вам 10/03/19
  • date +%x -r file даст вам 10/03/2019, или 10/03/19, если вы находитесь в США и 03/10/2019, или 03/10/19, если вы находитесь в Великобритании, чтобы назвать пару примеров (конечно, есть еще возможности)

Эти date опции формата, насколько я понимаю, являются комбинациями других опций формата. Вот некоторые пояснения из man page :

сокращенное название месяца %b locale (например, Jan) название полного месяца %B locale (например, Jan) название полного месяца %B locale (например, Январь) … %d день месяца (например, 01) %D дата; %m/%d/%y %e день месяца, с пробелами; %_d %F полная дата; %Y-%m-%d … %m месяц (01..12) … %x представление даты в локали (например, январь) %x представление даты в локали (например, январь) … %x представление даты в локали (например, январь) … %b представление даты в локали (например, январь) … %b представление даты в локали (например, январь) … .., 12/31/99) … %y последние две цифры года (00…99) %Y год … … По умолчанию в блокнотах с датами числовые поля с нулями.
Следующие опциональные флаги могут следовать `%’:

  • (hyphen) do not pad the field
    _ (underscore) pad with spaces
    0 (zero) pad with zeros
    ^ use upper case if possible
    # use opposite case if possible

N.B.: These flags don’t work on the “combo formats” like %F, %D and %x. They are for the “singular field formats”.

Apparently this last flag ( # ) does not work as I’d expect (e.g., if date +%b gives Oct, date +%#b gives OCT as opposed to oCT) I guess this would be useless, but I’d think a lower case option would be more useful. date +%#pdoes turn date +%p which might give PM or AM into pm or am, respectively. So I guess it’s not a ‘per-character’ case switch but sets the case of all the characters in the string to the opposite case of the majority of the characters? Also date +%P gives pm or am, but neither date +%^P nor date +%#P change its output. My guess for this case is that %P is just an alias for date +%#P, and it seems that whenever you add more than one flag, the behavior is undefined/unpredictable ( e.g., %#p gives the same as date +%0- e: date +%-e and 3 gives the same as date +%-0e: date +%0e, which makes you think that only the flag next to the letter works or that it goes left to right, but both 03 and date +%#p give date +%^p or date +%^#p, [depending on the time of course] ) unless there’s some hidden order of operations? Sorry for digressing…

Also, if you run the command pm, you can see the combo for the specific locale of your system (e.g., am).

And you can make your own combo. For example,

  • locale -k LC_TIME | grep ^d_fmt will give you d_fmt="%m/%d/%Y"&007date +%^b\ %-e\ %Y -r file&007OCT 3 2019.
2
2
2
2017-01-06 10:08:23 +0000

Если файл находится на другом веб-сервере, мне нравится httpie docs ).

Установка

pip install httpie --user

Использование

Команда -h дает только заголовок. Пример:

http -h [url] | grep 'Last-Modified\|Date'

Пример:

Date важна, так как она сообщает серверное время, а не ваше локальное время. Кроме того, не каждый сервер посылает Last-Modified (например, суперпользователь, кажется, не делает этого).

2
2
2
2018-11-14 04:22:35 +0000

1) Список файлов в каталоге с последними измененными датами/временем

Для списка файлов и отображения последних измененных файлов сверху, мы будем использовать -lt опции с командой ls.

$ ls -lt /run
output
total 24
-rw-rw-r--. 1 root utmp 2304 Sep 8 14:58 utmp
-rw-r--r--. 1 root root 4 Sep 8 12:41 dhclient-eth0.pid
drwxr-xr-x. 4 root root 100 Sep 8 03:31 lock
drwxr-xr-x. 3 root root 60 Sep 7 23:11 user
drwxr-xr-x. 7 root root 160 Aug 26 14:59 udev
drwxr-xr-x. 2 root root 60 Aug 21 13:18 tuned

https://linoxide.com/linux-how-to/how-sort-files-date-using-ls-command-linux/

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

6
10
7
5
8