我是Linux的新手。我正在使用命令行。我正在尝试查看文件的最后修改日期。在Linux中如何从命令行执行此操作?

评论

ls -l也可以使用...

superuser.com/questions/612099/的副本...

@DanielBeck是ls -l的日期是修改日期还是创建日期?

@BrunoBieri这是修改日期。见人ls。典型的Linux文件系统甚至都不会跟踪创建日期-有关跟踪的日期类型,请参见公认的答案。

#1 楼

如@ edvinas.me所述,stat会告诉您有关文件的各种信息,包括最后修改日期。

起初,我对Modify and Change感到困惑,只是为了澄清stat输出列表:



访问显示最后一次数据访问的时间(例如,读取)。

修改显示最后一次数据修改的时间。

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: -


#2 楼

使用stat命令来实现以下目的:

$ stat file


评论


如果只需要最后修改日期(以人类可读的形式),请使用stat -c'%y'文件

–亚当·泰勒(Adam Taylor)
15年2月19日在14:53

#3 楼

另一种更灵活的方式是使用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


评论


是的,非常有帮助,谢谢。这是一个bash函数,它将重命名以修改时间为前缀的文件:function mvfilestime(){if [x“ $ {1}” =“ x”];然后回显“ mvfilestime:缺少mv的文件参数”,否则f = $(date +“%Y-%m-%d-%H-%M” -r $ {1})-$ {1} echo mv $ {1} $ {f} mv $ {1} $ {f} fi}

–旅行者
18年4月17日在19:39



完美,应该是公认的答案

– A.B.
19-10-11在7:22

最佳答案完美!

– Smeterlink
20-5-20在11:55

#4 楼

请执行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


#5 楼

在@phoops的答案和@Sparhawk的答案中以@Adam Taylor的评论为基础。

具体来说只是获取日期(以2019年10月3日为例,因为这是我的上一个生日,这是我的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/201910/03/19(如果您在美国) 03/10/201903/10/19(如果您在英国),仅举几个例子(当然,还有更多可能)

这些date格式选项据我所知是其他格式的组合选项。以下是手册页中的一些解释:


%b语言环境的缩写月份名称(例如,一月)
%B语言环境的完整月份名称(例如,一月)
...
%d日(例如01)
%D日期;与%m /%d /%y
%e月的某天相同,并填充了空格;与%_d
%F完整日期相同;与%Y-%m-%d
...
%m month(01..12)
...
%x语言环境的日期表示形式相同(例如12 / 31/99)
...
%y年的后两位(00..99)
%Y年
...
默认情况下,日期填充用零填充的数字字段。
以下可选标志可能在'%'之后:

-(连字符)不填充字段
_(下划线)填充空格
0(零)填充了零的字符
^尽可能使用大写字母
#尽可能使用大写字母


NB:这些标志不起作用使用“组合格式”,例如%F%D%x。它们用于“单个字段格式”。

显然,最后一个标志(#)不能按我期望的那样工作(例如,如果date +%bOctdate +%#bOCT而不是oCT),我想这将是无用的,但我认为小写的选择会更多有用。 date +%#p确实将date +%p变成了PMAM,它们可能分别变成pmam。因此,我猜这不是“按字符”的大小写转换,而是将字符串中所有字符的大小写设置为大多数字符的相反大小写?同样date +%P给出pmam,但是date +%^Pdate +%#P都不会改变其输出。对于这种情况,我的猜测是%P只是%#p的别名,而且似乎每当添加多个标志时,该行为都是不确定的/不可预测的(例如,date +%0-edate +%-e具有相同的含义:3date +%-0e具有相同的含义date +%0e03,这使您认为只有字母旁边的标志有效或从左到右,但是date +%#^pdate +%^#p都给出pmam,[当然取决于时间])除非存在一些隐藏的顺序操作?抱歉离题...

此外,如果您运行命令locale -k LC_TIME | grep ^d_fmt,则可以看到系统特定语言环境的组合(例如d_fmt="%m/%d/%Y")。

您可以制作自己的组合。例如,



date +%^b\ %-e\ %Y -r file会给你OCT 3 2019



#6 楼


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/

#7 楼

如果文件在另一个Web服务器上,我喜欢httpie(文档)。

安装

pip install httpie --user


用法

-h命令仅给出标题。模式是

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


示例:

$ http -h https://martin-thoma.com/author/martin-thoma/ | grep 'Last-Modified\|Date'
Date: Fri, 06 Jan 2017 10:06:43 GMT
Last-Modified: Fri, 06 Jan 2017 07:42:34 GMT


Date很重要,因为它报告了服务器时间,不是您的当地时间。另外,并非每个服务器都会发送Last-Modified(例如,超级用户似乎不这样做)。