0

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

4

3 に答える 3

1

私はまだ試していませんが、2 つの日付の間にファイルを検索する方法に関するメーリング リストの投稿があります。関連部分:

次のように、start_date と stop_date の 2 つのファイルをタッチします。

OK、start_date は 03/29/06 真夜中、stop_date は 03/29/06 真夜中の 30 分後です。ls -al を実行して確認することをお勧めします。

見つけるには、-newer と ! を見つけることができます。-newer、次のように: $ find /dir -newer start_date ! -新しい stop_date -印刷

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

(または、-exec を試して ls -l を実行することもできます。形式がよくわからないので、少しいじる必要があります)

于 2009-08-14T02:30:39.870 に答える
0

ほんの一例として、bash シェルでは -nt テスト演算子を使用できます (私が間違っていなければ、korn シェルにも付属しています)。

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
于 2009-08-14T03:26:13.127 に答える
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
于 2014-11-11T15:35:56.490 に答える