Есть ли способ узнать время создания файла в Ubuntu? - PullRequest
11 голосов
/ 28 сентября 2010

Я использую Ubuntu и хочу знать время создания файла, даже когда он был изменен или доступен?

Ответы [ 7 ]

22 голосов
/ 28 сентября 2010

К сожалению, Unix не хранит время создания файла.

Все, что вы можете получить, используя stat , это

  1. время последнего доступа
  2. время последней модификации
  3. время последнего изменения статуса

Примечание: При использовании файловой системы доступен тип ext4 crtime !

3 голосов
/ 09 апреля 2013

Этот маленький скрипт может получить дату создания для ext4:

#!/bin/sh

fn=`realpath $1`
echo -n "Querying creation time of $1..."
sudo debugfs -R "stat $fn" /dev/sda4|grep crtime

Я назвал его fcrtime и поместил в мою папку ~/bin.Поэтому в любой папке я могу использовать команду, например: fcrtime example.odp

Пример вывода:

crtime: 0x5163e3f0:12d6c108 -- Tue Apr 9 12:48:32 2013

По сравнению со статистикой того же файла:

  File: `example.odp'
  Size: 54962       Blocks: 112        IO Block: 4096   regular file
Device: 804h/2052d  Inode: 11019246    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   fulop)   Gid: ( 1000/   fulop)
Access: 2013-04-09 13:20:05.263016001 +0300
Modify: 2013-04-09 13:20:05.227016001 +0300
Change: 2013-04-09 13:20:05.227016001 +0300
 Birth: -

ПРИМЕЧАНИЯ

  1. realpath обычно не устанавливается по умолчанию.В Ubuntu например.установите его с sudo apt-get install realpath
  2. Замените /dev/sda4 при необходимости на тот, который вы получите от mount|grep ext4
3 голосов
/ 28 сентября 2010

Ближайшим доступным атрибутом является «время изменения», также известное как ctime.Это обновляется для различных системных вызовов, любых, которые изменяют индекс, а не для данных, которые он содержит.

stat (3)
1 голос
/ 28 марта 2015

Время создания, известное как файл Время рождения и поддерживается в некоторых файловых системах, только с некоторыми ядрами .Команда будет Мохсен Пахлеванзаде ответ:

stat --printf='%w' yourfile   #human readable

stat --printf='%W' yourfile   #seconds from Epoch , 0 if unknown

Примечание: этот вопрос является дубликатом Как найти дату создания файла? .Также обязательно прочитайте этот вопрос Какие файловые системы в Linux хранят время создания? .

1 голос
/ 28 сентября 2010

Согласно http://en.wikipedia.org/wiki/Comparison_of_file_systems, это доступно для файловых систем ext4, btfrs, FAT, NTFS и UDF, а также для некоторых других, с которыми вы вряд ли столкнетесь.Он недоступен в ext2 или ext3, вероятно, наиболее распространенных форматах файловой системы в Ubuntu.

Вам понадобится патч для ядра, хотя: http://lwn.net/Articles/394391/. Очевидно, это потому, что Линус отклонил атрибут времени создания наоснование, что кто-то назвал это «время», а кто-то еще назвал это «время», и поэтому идея должна быть бесполезной.

0 голосов
/ 29 сентября 2010

ребята, я только что закончил писать этот скрипт, чтобы найти дату создания файла, используя perl:

use File::stat;
if (  scalar( @ARGV ) == 0 ) {
 die("type  a file  name  ex:perl filestat.pl <filename>");    
}
my $filename =  $ARGV[0] ;
my @info = stat($filename);
print "Creation time :",scalar localtime stat($filename)->ctime;
print "\n";
0 голосов
/ 28 сентября 2010
...