0

ディレクトリには、毎日生成されるファイルがあります。2012 年 4 月 16 日に生成された場合のファイルの形式は TEST_20120416 です。

そのため、7 日以上経過したすべてのファイルを削除する必要があります。私はこれをやってみました

#!/bin/ksh
find /data/Test/*.* -mtime -7 -exec rm -rf {} \;
exit 0

問題は上記のコードが変更時間に基づいて削除されていることですが、要件によるとファイルは作成時間に基づいて削除する必要があります。ファイル名に基づいてファイルを削除するのを手伝ってください(ファイル名にはタイムスタンプがあります)

4

2 に答える 2

0

幸いなことに、作成日がファイル名にエンコードされているため、これは機能するはずです。

#!/bin/sh
REFDATE=$(date --date='-7 days' +%Y%m%d)
PREFIX=TEST_
find /data/Test/ -name $PREFIX\* | while read FNAME; do
   if [ ${FNAME#$PREFIX} -lt $REFDATE ]; then
       rm $FNAME
   fi
done

TEST_ で始まる名前のファイルが他にある場合は、警告が出力されます。この場合、さらにフィルタリングが必要になる場合があります。

于 2012-04-24T13:18:10.047 に答える
-1
find /data/Test/*.* -ctime -7 -delete

' /data/Test/ を見つけます' /data/Test フォルダー内のすべてのファイルを検索し、引数 '-ctime -7' を指定すると、検索を作成時刻から過去 7 日間に制限し、-delete オプションを指定すると、そのようなファイルが削除されます

于 2014-04-18T11:00:57.533 に答える