【问题标题】:Displaying Last modification date显示最后修改日期
【发布时间】:2013-11-13 05:06:04
【问题描述】:

我需要显示文件名、大小、硬链接数、所有者和修改日期(按此顺序)。

#!/bin/csh

echo Enter file name
set filename = $<

if(-f $filename)then

    if(-z $filename)then
      rm $filename
    else 
      clear

      echo $filename
      stat -c %s $filename
      stat -c %h $filename
      stat -c %U $filename
      stat -c %y $filename

    endif
endif

一切正常(我认为),除了它显示的不仅仅是日期。我会使用什么命令来显示上次修改的日期?

【问题讨论】:

    标签: linux shell csh


    【解决方案1】:

    请参阅man stat

    您需要使用amcB 提供上次访问或修改文件的时间。

    【讨论】:

    • 你能再解释一下吗?我对 shell 脚本很陌生。
    • 即使我很新。这是我在手册页中看到的。使用这些选项尝试stat。例如stat -astat -m.
    【解决方案2】:

    您似乎正在寻找这个:

    stat -c %y $filename
    

    或者这个:

    date -r $filename
    

    或者这个(最便携的):

    fn=$filename perl -e 'print scalar localtime((stat("$ENV{fn}"))[9])'
    

    另一方面,stat -c %y 已经在您的帖子中,您写道:

    一切正常(我认为),除了它显示的不仅仅是日期。我会使用什么命令来显示上次修改的日期?

    这让我觉得你可能只想要日期部分?一种(懒惰的)解决方案是使用 cutawksed 等 shell 命令来提取您需要的内容,例如:

    $ stat -c %y sample.txt
    2013-10-12 09:24:08.096820646 -0700
    $ stat -c %y sample.txt | cut -f1 -d' '
    2013-10-12
    

    更好的解决方案是以所需格式生成日期,但这取决于您使用的命令。例如stat 不能这样做,但dateperl 可以,例如:

    date +%Y-%m-%d -r $filename
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      相关资源
      最近更新 更多