Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 要显示某些文件的创建时间。_Linux_Perl_Ctime - Fatal编程技术网

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

Linux 要显示某些文件的创建时间。,linux,perl,ctime,Linux,Perl,Ctime,我正在编写perl,并在Windows系统中运行得非常好。 但是当我将perl脚本从windows系统传输到Linux时。 在Linux系统中运行时,我得到了错误的日期/时间。 我需要一些帮助。谢谢 Perl中的源代码 if (($file =~ m/(\d)(\S+)\.csv/) && ($flag == 0)) { open(para_file,$file);

我正在编写perl,并在Windows系统中运行得非常好。 但是当我将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");
             }            
if($file=~m/(\d)(\S+\.csv/)&&($flag==0))
{
打开(para_文件,$file);
$datetime\u string=ctime(stat($file)->ctime);
而($line=)
{
如果($line=~/0\,170\,16\,/)
{
$cal=$cal+1;
}
}
推送(@data,“$cal”);
推送(@data,“$datetime_字符串”);
}            
$file将是我的文件名。创建时的windows日期和时间是正确的,但不理解为什么在LINUX中它给了我错误的日期和时间

从windows生成的输出

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

从linux生成的输出

9023-0 50000 5111 10.222015年7月30日星期四16:45:25
9023-2 100000 23251 23.252015年7月30日星期四16:45:25

9024 AHG 5000 0.00周四2015年7月30日16:45:25

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

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


然而,您不能得到的是“创建时间”,因为EXT文件系统没有记录它。(其他文件系统格式可能—例如NTFS—但我不确定是否建议在Linux设备上使用NTFS!)

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

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


然而,您不能得到的是“创建时间”,因为EXT文件系统没有记录它。(其他文件系统格式可能会出现,例如NTFS,但我不确定是否建议在Linux设备上使用NTFS!)

不同系统上如何访问文件系统?显然,您必须使用某种类型的文件服务器,或者这是一个可移动驱动器?如果您将文件从Windows传输到Linux,它们的创建时间将发生变化,并显示它们被移动的时间。@ChankeyPathak严格地说,这不是移动,而是复制。不能在系统之间移动文件。这就是为什么要创建一个新文件,这解释了新的创建时间。真正的移动实际上可以节省时间。@arkascha:啊,我明白了。我重复上面的问题:如果你在不同的系统上运行脚本,那么它们如何访问同一个文件?通过什么方式?如何在不同的系统上访问文件系统?显然,您必须使用某种类型的文件服务器,或者这是一个可移动驱动器?如果您将文件从Windows传输到Linux,它们的创建时间将发生变化,并显示它们被移动的时间。@ChankeyPathak严格地说,这不是移动,而是复制。不能在系统之间移动文件。这就是为什么要创建一个新文件,这解释了新的创建时间。真正的移动实际上可以节省时间。@arkascha:啊,我明白了。我重复上面的问题:如果你在不同的系统上运行脚本,那么它们如何访问同一个文件?通过什么方式?如何在Linux上使用NTFS?@cs87这是一个问题,您可能应该在SuperUser或Unix/Linux上发布。但说真的,不要,这很糟糕。只要接受创造时间没有那么有趣或有意义。为了获得创建时间而更改整个文件系统是一件痛苦的事,但好处却微乎其微。如何在Linux上使用NTFS?@cs87这是一个问题,您可能应该在SuperUser或Unix/Linux上发布。但说真的,不要,这很糟糕。只要接受创造时间没有那么有趣或有意义。仅仅为了获得创建时间而更改整个文件系统是一件痛苦的事情,但好处却微乎其微。