我正在寻找一种以unix纪元秒为单位以十六进制或十进制形式获取文件的crtime的方法,而不是以日期和时钟格式,并且没有额外的输出。
该命令添加附加文字输出顶部的内容(例如“debugfs 1.42.12 (29-Aug-2014)”)无法使用 grep、sed 等删除。
debugfs -R 'stat <7473635>' /dev/sda7 | grep ctime
该命令给出修改以 UNIX 纪元秒为单位的时间。
date -r default.txt +%s
此外,我看过的所有其他帖子都确实获取了文件的 crtime,将其获取为与 UNIX 纪元时间相反的日期和时钟。总之,如何仅获取 ext4 fs 中文件的创建时间(以 unix 纪元秒为单位)。
答案1
您可以grep
与 PCRE ( -P
) 一起使用来提取所需的部分并将其用作 的输入date
:
date --date="$(sudo debugfs .... |& grep -Po '^crtime.*-\s\K.*$')" '+%s'
或者
date --date="$(sudo debugfs .... 2>/dev/null | grep -Po '^crtime.*-\s\K.*$')" '+%s'
例如:
$ date --date="$(sudo debugfs -R 'stat <677051>' /dev/sda3 |& grep -Po '^crtime.*-\s\K.*$')" '+%s'
1442488264
您还可以使用sed
:
date --date="$(sudo debugfs .... |& sed -n 's/^crtime.*- \(.*\)$/\1/p')" '+%s'
或者
date --date="$(sudo debugfs .... 2>/dev/null | sed -n 's/^crtime.*- \(.*\)$/\1/p')" '+%s'
例如:
$ date --date="$(sudo debugfs -R 'stat <677051>' /dev/sda3 |& sed -n 's/^crtime.*- \(.*\)$/\1/p')" '+%s'
1442488264