想要显示某些文件的创建时间。

时间:2015-09-23 06:26:50

标签: linux perl ctime

我正在编写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它给我错误的日期&amp;时间。

来自Windows的生成输出

9023-0 50000 5111 10.22 2014年7月21日星期一17:44:38
 9023-2 100000 23251 23.25 2014年4月11日星期五10:12:19
 9024_AHG 5000 0 0.00 2014年11月27日星期四15:28:55

来自linux的生成输出

9023-0 50000 5111 10.22 2015年7月30日星期四16:45:25
 9023-2 100000 23251 23.25 Thu Jul 30 16:45:25 2015
 9024_AHG 5000 0 0.00 Thu Jul 30 16:45:25 2015

1 个答案:

答案 0 :(得分:4)

这里的问题不在于你正在做什么,而是你误解了ctime是什么。 Linux文件系统记录更改时间而非创建时间。

mtime表示修改文件内容。 ctime表示属性的修改。因此,它们可能是相同的数字。

然而,你无法获得的是&#34;创造时间&#34;因为EXT文件系统没有记录它。 (其他文件系统格式可能 - 例如NTFS - 但我不确定我是否建议在Linux机器上使用NTFS!)