如何获取 ext4 分区中文件的 crtime 作为单个数字或字符串

如何获取 ext4 分区中文件的 crtime 作为单个数字或字符串

我正在寻找一种以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

相关内容