Bash
如何以單個數字或字元串的形式獲取 ext4 分區中文件的 crtime
我正在尋找一種在 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 中文件的創建時間。
您可以使用
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