2015-09-23 3 views
0

Я писал 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"); 
      }    

$ файл будет мое имя файла. Окна даты & время на создание правильные, но не понимаю, почему в LINUX он дал мне неправильную дату & раз.

Выход поколения, из окон

9023-0 50000 5111 10,22 пн 21 июля 17:44:38 2014
9023-2 100000 23251 23,25 Пт 11 апреля 2014 10:12:19
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 июля 2015 16:45:25
9024_AHG 5000 0 0,00 чт 30 июля 16:45 : 25 2015

+0

Каким образом файловые системы доступны в разных системах? Очевидно, у вас должен быть какой-то файловый сервер, который вы используете, или это съемный диск? – arkascha

+0

Если вы перенесете файлы в Linux из Windows, время их создания изменится и покажет время их перемещения. –

+2

@ChankeyPathak Строго говоря, это не было бы шагом, а копией. Вы не можете переместить файл между системами. Вот почему фактически создается новый файл, который объясняет новое время создания. Настоящий _move_ фактически сохранил бы время. – arkascha

ответ

4

Проблема здесь не в том, что вы делаете, а в том, что вы неправильно поняли, что такое ctime. Linux файловые системы записать изменить время не создание время.

mtime обозначает модификацию содержимого файла. ctime обозначает модификацию атрибутов. В результате они могут быть одинаковыми.

Однако то, что вы не может get - это «создать время», потому что файловая система EXT не записывает его. (Другие форматы файловой системы могут - например, NTFS - но я не уверен, что предлагаю использовать NTFS в ящике Linux!)

+0

Как сделать NTFS на Linux? – cs87

+0

@ cs87 - это вопрос, который вы, вероятно, должны публиковать на SuperUser или Unix/Linux. – simbabque

+1

Но серьезно - не надо, это противно. Просто примите, что время творения не так интересно или значимо. Изменение всей файловой системы только для получения времени создания - большая боль для незначительной выгоды. – Sobrique

Смежные вопросы