Хочу показать время создания для некоторых файлов.
Я писал Perl и довольно хорошо запускал его в оконной системе. Но когда я переношу Perl-скрипт из системы Windows в Linux. И запустить в системе Linux, я получаю неправильную дату / время. Нужна помощь. Благодарю.
Исходный код на Perl
if (($file =~ m/(\d)(\S+)\.csv/) && ($flag == 0))
{
open(para_file,$file);
$datetime_string = ctime( stat($file)->ctime );
while ($line=<para_file>)
{
if ($line =~ /0\,170\,16\,/)
{
$cal = $cal + 1;
}
}
push(@data,"$cal");
push(@data,"$datetime_string");
}
$file будет моим именем файла. Дата и время создания окна правильны, но я не понимаю, почему в LINUX они дают неправильную дату и время.
Вывод поколения, из окон
9023-0 50000 5111 10,22 понедельник 21 июля 17:44:38 2014
9023-2 100000 23251 23,25 пт 11 апреля 10:12:19 2014
9024_AHG 5000 0 0,00 Чт 27 ноября 15:28:55 2014
Вывод поколения, из linux
9023-0 50000 5111 10,22 чт 30 июля 16:45:25 2015
9023-2 100000 23251 23,25 чт 30 июля 16:45:25 2015
9024_AHG 5000 0 0,00 Чт 30 июля 16:45:25 2015
1 ответ
Проблема здесь не в том, что вы делаете, а в том, что вы неправильно поняли, что ctime
является. Файловые системы Linux записывают время изменения, а не время создания.
mtime
обозначает изменение содержимого файла. ctime
обозначает модификацию атрибутов. В результате у них вполне может быть одинаковое число.
Однако то, что вы не можете получить, это "время создания", потому что файловая система EXT не записывает его. (Другие форматы файловой системы могут - NTFS например - но я не уверен, что я бы предложил использовать NTFS на Linux-коробке!)