用于在两个日期之间获取文件的KornShell脚本

时间:2009-08-14 02:09:39

标签: shell scripting file date ksh

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

3 个答案:

答案 0 :(得分:1)

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

  

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

     

好的,start_date是午夜03/29/06,   stop_date是03/29/06 30分钟后   午夜。你可能想做一个ls    - 检查。

     

开始寻找,你可以找到-newer和   然后 ! - 更新,像这样:$ find / dir    - 更新的start_date! -newer stop_date -print

     

将它与ls -l结合使用,得到:$   find / dir -newer start_date! -newer   stop_date -print0 | xargs -0 ls -l <​​/ p>      

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

答案 1 :(得分:0)

在bash shell中,只是一个例子,你可以使用-nt test运算符(如果我没有错的话,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

答案 2 :(得分:0)

在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