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

これは、今日の日付のタイムスタンプを持たないすべてのファイルを一覧表示しています。リストされているファイルを削除する必要があります。ファイルを削除する方法を教えてください。

4

4 に答える 4

2

別のオプションは次のとおりです。

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

ここで、「folder」は削除するファイルを含むディレクトリです。

于 2012-04-17T17:31:35.817 に答える
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> 
于 2012-04-18T05:52:04.427 に答える
0

小さな間違いがあります。ls 行では、UPADTE ではなく UPDATE を使用する必要があります。また、UPPDATE の行には UPDATE と `` (バッククォート) を使用する必要があります。修正後のスクリプトは次のとおりです。

#!/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」を追加したことに注意してください。

于 2012-04-17T14:10:04.057 に答える
-1

find コマンドを使用したいと思います。タイムスタンプをチェックするオプションがあります。

rm `find /data -ctime +1`

これにより、24時間以上前にステータスが変更された/dataのすべての罰金が削除されます

検索を使用してタイムスタンプを確認する方法はたくさんあります。

于 2012-04-17T14:16:21.820 に答える