como obter o tempo de execução de um arquivo em uma partição ext4 como um único número ou string

1

Eu estou procurando um método para obter o tempo de execução de um arquivo em hexadecimal ou decimal em segundos de unix epoch em vez de em um formato de data e clock e sem saída adicional.

Este comando adiciona texto adicional no topo da saída (como "debugfs 1.42.12 (29-Ago-2014)") que é impossível remover com grep, sed, etc.

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

Este comando fornece o tempo de modificação em segundos de unix epoch.

date -r default.txt +%s

Além disso, todas as outras postagens que eu observei obtêm o tempo de execução dos arquivos em uma data e um relógio opostos à hora da unix epoch. Em conclusão, como obtenho apenas o tempo de criação de um arquivo em um ext4 fs em segundos de unix epoch.

    
por Gemohn Herbile 19.10.2015 / 23:38

1 resposta

0

Você pode usar grep com PCRE ( -P ) para extrair a parte desejada e usá-la como entrada para date :

date --date="$(sudo debugfs .... |& grep -Po '^crtime.*-\s\K.*$')" '+%s'

Ou

date --date="$(sudo debugfs .... 2>/dev/null | grep -Po '^crtime.*-\s\K.*$')" '+%s'

Por exemplo:

$ date --date="$(sudo debugfs -R 'stat <677051>' /dev/sda3 |& grep -Po '^crtime.*-\s\K.*$')" '+%s'
1442488264

Você também pode usar sed :

date --date="$(sudo debugfs .... |& sed -n 's/^crtime.*- \(.*\)$//p')" '+%s'

Ou

date --date="$(sudo debugfs .... 2>/dev/null | sed -n 's/^crtime.*- \(.*\)$//p')" '+%s'

Por exemplo:

$ date --date="$(sudo debugfs -R 'stat <677051>' /dev/sda3 |& sed -n 's/^crtime.*- \(.*\)$//p')" '+%s'
1442488264
    
por 19.10.2015 / 23:55