2017-12-14 7 views
0

x日より古いファイルをループ内で削除せずに削除しようとしています。 私はそれらのすべて削除するには、このスクリプトを使用しています:あなたは前X日のタイムスタンプを持つ一時ファイルを作成し、あなたのforループ内比較することができますどのように私はこの検索ユーズを使用せずにx日を超えるループファイルを削除する

+4

「検索」なしの理由これは、このユースケースの標準ツールです。 – tripleee

+0

['man stat'](http://www.polarhome.com/service/man/?qf=stat&tf=2&of=AIX&sf=) – tripleee

答えて

1

でのmtimeを組み込むん

for f in /path/tomy/directory/*.rpt 
do 
    # if file, delete it 
    [ -f "$f" ] && rm "$f" 
done 

をそのファイルを削除するかどうかを決定する各ファイルのタイムスタンプ。

n=60 # number of days 
ref="/tmp/$$.tmp" # temporary filename 

touch -t $(date -d "-$n days" '+%Y%m%d%H%M.%S') "$ref" 

for f in /path/tomy/directory/*.rpt; do 
    [[ -f $f && $ref -nt $f ]] && echo rm "$f" 
done 

rm "$ref" 

あなたは出力に満足したら、rmechoを削除します。

+0

ありがとうございました。どうやら、私はAIX上で '-d'を使うことができないのですか? – ErrorNotFoundException

+0

10日前の日付である '$(date -d" - $ n days "'+%Y%m%d%H%M.%S')'を '201712040000.00'に置​​き換えてください。 – anubhava

関連する問題