【问题标题】:KornShell script to get files between two dates用于在两个日期之间获取文件的 KornShell 脚本
【发布时间】:2010-11-19 12:41:23
【问题描述】:

需要通过 KornShell (ksh) 脚本获取两个给定日期之间的文件。如果一天有多个文件,请获取当天的最新文件。

【问题讨论】:

  • 两次约会是什么意思?日期是文件名的一部分,还是您需要根据文件的访问时间、创建时间来获取文件?

标签: shell scripting file date ksh


【解决方案1】:

我还没有尝试过,但是有 a mailing list post 关于在两个日期之间查找文件的信息。相关部分:

触摸 2 个文件,start_date 和 stop_date,像这样:$ touch -t 200603290000.00 start_date $ touch -t 200603290030.00 stop_date

好的,开始日期是 06 年 3 月 29 日午夜, stop_date 是 06 年 3 月 29 日 30 分钟后 午夜。你可能想做一个 ls -al 来检查。

在查找时,您可以找到 -newer 和 然后 ! -较新,像这样:$ find /dir -较新的开始日期! -newer stop_date -print

把它和 ls -l 结合起来,你会得到:$ 找到 /dir -newer start_date ! -较新 停止日期-print0 | xargs -0 ls -l

(或者你可以试试 -exec 执行 ls -l。我不确定格式,所以你必须稍微弄乱一下)

【讨论】:

    【解决方案2】:

    在 bash shell 中,只是一个示例,您可以使用 -nt 测试运算符(如果我没记错的话,korn shell 也自带)。

    printf "Enter start date( YYYYMMDD ):"
    read startdate
    printf "Enter end date( YYYYMMDD ):"
    read enddate
    touch -t "${startdate}0000.00" sdummy
    touch -t "${enddate}0000.00" edummy
    for fi in *
    do
        if [ $fi -nt "sdummy" -a ! $fi -nt "edummy" ] ;then
            echo "-->" $fi    
        fi
    done
    

    【讨论】:

      【解决方案3】:

      简而言之 ksh :

      !/usr/bin/ksh
      # main from_date to_date path
      # date format: YYMMDDhhmmss
      ls -l  --time-style "+%y%m%d%H%M%S" $3 | awk '{ print $6 " " $7 }' | while read t n
          do
              if (( t > $1 )) && (( t < $2 )); then
                  echo $t $n
              fi
          done
      

      【讨论】:

        猜你喜欢
        • 2011-03-24
        • 1970-01-01
        • 2022-01-22
        • 2018-01-11
        • 2013-07-02
        • 1970-01-01
        • 1970-01-01
        • 2018-09-18
        • 1970-01-01
        相关资源
        最近更新 更多