use*_*192 215 linux command-line
我是 Linux 新手。我正在使用命令行。我正在尝试查看文件的上次修改日期。如何从命令行在 Linux 中执行此操作?
nep*_*tom 205
正如@edvinas.me 所提到的,它会stat
告诉您有关该文件的各种信息,包括上次修改日期。
起初,我对Modify和Change感到困惑,只是为了澄清,stat
输出列表:
例如:
~ $ 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: -
Run Code Online (Sandbox Code Playgroud)
pho*_*ops 86
stat
为此使用命令:
$ stat file
Run Code Online (Sandbox Code Playgroud)
Spa*_*awk 66
另一种更灵活的方法是使用date -r
. 来自man date
:
-r, --reference=FILE
display the last modification time of FILE
Run Code Online (Sandbox Code Playgroud)
这具有允许您指定输出格式的优点,例如
$ 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
Run Code Online (Sandbox Code Playgroud)
小智 20
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
Run Code Online (Sandbox Code Playgroud)
基于@Adam Taylor 在@phoops 的回答和@Sparhawk 的回答中的评论。
具体来说就是获取日期(使用 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/2019
,或者10/03/19
如果你在美国和是要么03/10/2019
,或者03/10/19
如果你在英国的时候,仅举几个例子(当然也有更多的可能性)据date
我了解,这些格式选项是其他格式选项的组合。以下是手册页中的一些解释:
%b 语言环境的缩写月份名称(例如,Jan)
%B 语言环境的完整月份名称(例如,一月)
...
%d 月份中的第几天(例如,01)
%D 日期;与 %m/%d/%y
%e 月中的某一天相同,填充了空格;与 %_d
%F 完整日期相同;与 %Y-%m-%d
...
%m 月 (01..12)
...
%x 语言环境的日期表示相同(例如,12/31/99)
...
%y 年份的最后两位数字( 00..99)
%Y year
...
默认情况下,日期用零填充数字字段。
以下可选标志可以跟在 `%' 后面:-(连字符)不要
用空格填充字段_(下划线)用空格填充
0(零)用零填充
^ 尽可能使用大写
#尽可能使用相反的大小写
注意:这些标志不适用于“组合格式”,例如%F
,%D
和%x
。它们用于“单一字段格式”。
显然,最后一个标志 ( # ) 不像我期望的那样工作(例如,如果date +%b
给Oct
,date +%#b
给OCT
而不是oCT
)我想这没用,但我认为小写选项会更有用。date +%#p
确实变成date +%p
which 可能会分别给PM
或AM
变成pm
或am
。所以我想这不是“每个字符”大小写切换,而是将字符串中所有字符的大小写设置为大多数字符的相反大小写?也date +%P
给出pm
or am
,但既不date +%^P
也不date +%#P
改变其输出。我对这种情况的猜测是这%P
只是一个别名%#p
,而且似乎每当您添加多个标志时,行为都是未定义/不可预测的(例如,date +%0-e
给出与date +%-e
:相同的结果,3
并且date +%-0e
给出与date +%0e
:相同的结果03
,这让您认为只有字母旁边的标志有效,或者它那张左到右,但两者date +%#^p
并date +%^#p
给予pm
或am
[取决于课程的时间] ),除非有操作的一些隐藏的秩序?抱歉跑题了...
此外,如果您运行该命令locale -k LC_TIME | grep ^d_fmt
,您可以看到系统特定区域设置的组合(例如,d_fmt="%m/%d/%Y"
)。
你可以制作自己的组合。例如,
date +%^b\ %-e\ %Y -r file
会给你 OCT 3 2019