私はシェルスクリプトに慣れていませんが、誰でも手助けできますか?フォルダー内のスクリプトを現在の日付から10日まで削除したい。スクリプトは次のようになります。
2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script
スクリプトはCrontabで10日ごとに実行されるため、現在の日付が必要です。
find
は、この種のタスクに共通のツールです。
find ./my_dir -mtime +10 -type f -delete
説明
./my_dir
あなたのディレクトリ(自分のものに置き換えてください)-mtime +10
-type f
のみのファイル-delete
は驚きません。 コマンド全体を実行する前にfind
フィルタをテストするために削除してくださいそして./my_dir
が悪い驚きを避けるために存在するように気をつけてください!
古いファイルを削除するためのシェルスクリプトの追加
#!/bin/bash
timestamp=$(date +%Y%m%d_%H%M%S)
path="/data/backuplog"
filename=log_back_$timestamp.txt
log=$path/$filename
find $path -name "*.txt" -type f -mtime +7 -print -delete >> $log
echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log
START_TIME=$(date +%s)
... code for backup ...or any other operation ....
END_TIME=$(date +%s)
ELAPSED_TIME=$(expr $END_TIME - $START_TIME)
echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) " >> $log
コードはsputnickの答えに基づいており、さらにいくつかの点が追加されています。
あなたがファイルデータを介して作業する余裕があるならば、あなたはすることができます
find -mmin +14400 -delete