2009-08-14 24 views
0

KornShell(ksh)スクリプトを使用して2つの指定された日付の間でファイルを取得する必要があります。 1日に複数のファイルがある場合、その日の最新のファイルを取得します。2つの日付の間でファイルを取得するKornShellスクリプト

+0

何を意味するのですか?日付はファイル名の一部ですか、またはアクセス時間、作成時間に基づいてファイルを取得する必要がありますか? –

答えて

1

私はそれを試していませんが、2つの日付の間にファイルを見つけることについてa mailing list postがあります。関連部分:

Touchのこのような2つのファイル、START_DATEと stop_dateは、:-t $タッチ 200603290000.00 START_DATEの$タッチ

stop_dateは200603290030.00 -t

[OK]を、start_dateのは03/29/06真夜中で、 stop_dateは、 深夜の30分後03/29/06です。確認するには -alを実行するとよいでしょう。

ここで、-newerと を見つけることができます。 -newer、これは次のようになります:$ find/dir -newer start_date! -newer stop_date -print

これをls -lと組み合わせると、次のようになります。$ find/dir -newer start_date! -newer stop_date -print0 | xargsの-0 lsの-l bashで

(それとも、LSに -lを実行するために-exec試みることができます。あなたは少し周りマックする必要がありますので、私は、フォーマットのわからない)

0

シェル、ちょうど例ですが、あなたは-ntテスト演算子を使うことができます(kornシェルには、それが付属しています)。 kshのためのナットシェルで

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 
0

:あなたは2日付で

!/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 
関連する問題