Bash

如何以單個數字或字元串的形式獲取 ext4 分區中文件的 crtime

  • October 19, 2015

我正在尋找一種在 unix 紀元秒內以十六進製或十進制獲取文件 crtime 的方法,而不是以日期和時鐘格式獲取文件的 crtime,並且沒有額外的輸出。

此命令在輸出頂部添加了無法使用 grep、sed 等刪除的附加文本(例如“debugfs 1.42.12 (29-Aug-2014)”)。

debugfs -R 'stat <7473635>' /dev/sda7 | grep ctime

此命令以 unix 紀元秒為單位給出修改時間。

date -r default.txt +%s

此外,我看過的所有其他文章都確實獲得了文件的 crtime,它的日期和時鐘與 unix 紀元時間相反。總之,我如何在 unix 紀元秒內僅獲得 ext4 fs 中文件的創建時間。

您可以使用grepPCRE ( -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

引用自:https://unix.stackexchange.com/questions/237258