Хочу показать время создания для некоторых файлов.

Я писал 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-коробке!)

Другие вопросы по тегам