2012-04-17 16 views
1

フォルダーには、ファイル(例:A_17APR2012.csv)があります。私の要件は、私がこれは今日の日付のタイムスタンプを持っていないすべてのファイルを一覧表示され今日の日付のタイムスタンプサブストリングに基づいてファイルを削除する

#!/bin/ksh 

DATE=`date +"%d%h%Y"` 
DIR=/data/rfs/ 
FOLDER=Test 
FILE=$DIR$FOLDER 

UDATE="$(echo $DATE | tr '[a-z]' '[A-Z]')" 

ls $FILE | grep -v "${UDATE}" 

exit 0 

持っていないすべてのファイルを表示するためにこれをやってみました

今日のタイムスタンプを除くすべてのファイルを削除することです。今、私はリストされているファイルを削除する必要があります。私はどのようにファイルを削除することができます。

答えて

0

あなたは少し間違いがあります。 ls行では、UPADATEではなくUPDATEを実行する必要があります。また、おそらくUPPDATE行はUPDATEと ``(backticks)でなければなりません。修正後、スクリプトは次のようになります。

#!/bin/ksh 

DATE=`date +"%d%h%Y"` 
DIR=. 
FOLDER= 
FILE=$DIR$FOLDER 

UPDATE=`echo $DATE | tr [a-z] [A-Z]` 

ls -1 $FILE | grep -v "$UPDATE" 

exit 0 

lsにも "-1"を追加しました。私はあなたがfindコマンドを使用したいと思う

-1

は、それはあなたのためのタイムスタンプをチェックするオプションを持っているIEの/ステータスが24以上に変更されたのデータのすべての罰金を削除します

rm `find /data -ctime +1` 

時間前

findを使用してタイムスタンプをチェックする方法はたくさんあります。

+1

が、このシナリオでは1缶いつでもファイルを変更してください。したがって、このクエリは正しい結果を返しません。 – user680204

+0

-1:質問には答えません。 –

2

ここでは別のオプションです:

find folder -type f -not -name '*'$(date +"%d%h%Y")'*' -delete 

「フォルダ」を削除するファイルを含むディレクトリです。

+0

このクエリは多くの役に立ちます。私が直面している問題は、フォルダにファイルがなく、そのフォルダ自体を削除していない場合です。フォルダを削除しないでください。ファイルは18APR2012形式です.Kindly私を助けてください。 – user680204

+0

@ user680204、このバージョンに試してみましょうそれがあなたの問題を解決するかどうかを知る。 –

0

間違いは以下のとおりです。

UPPDATE= echo $DATE | tr [a-z] [A-Z] 

は、あなたがそれを変更する必要があります。これは、更新時刻に応じてファイルを削除します完璧

UPPDATE="$(echo $DATE | tr '[a-z]' '[A-Z]')" 

作品

pearl.388> cat temp2.sh 
#!/bin/ksh 

DATE=`date +"%d%h%Y"` 
DIR=data/ 
FOLDER=Test 
FILE=$DIR$FOLDER 

UPPDATE="$(echo $DATE | tr '[a-z]' '[A-Z]')" 

ls -1 $FILE | grep -v "^${UPPDATE}" 

exit 0 
pearl.389> 
関連する問題