私は初めてbashスクリプトに触れました。 1か月間ファイルをアーカイブし、残りはアーカイブする必要があります。
例:
ファイル形式:WE20160225.log (月、日、20160225)
/oracle/Sales
ディレクトリに2つのファイルがあるとします。
WE20160130.log
WE20151201.log
WE20151201.logをtarする必要があります。
WE20160130.logの場合、そのファイルは1ヶ月も経っていないため、該当しません。どうすればいいですか? (ファイル名を部分文字列で囲む必要があるかもしれません)
ディレクトリを変更できますが、次に何をすべきかわかりません。私のロジックは、ファイルを繰り返し、ファイル名から日付を取得し、現在の日付と比較することです。
ファイルの変更日ではなく、ファイル名の日付を使用する必要があります。
SALES_DIR="/oracle/sales/"
cd $SALES_DIR
ベストアンサー1
私は次のようなものを使用します:
find <dir> -name <pattern> -mtime <timeframe> -exec <cmd> <options> {} \;
find . -type f -name '*log*' -mtime +10 -exec tar -rvf backup$(date +"%m-%d-%y") {} \;
名前にログが含まれていて、10日より古いファイルを見つけます。今日の日付を含むtarアーカイブを作成し、すべてのファイルを追加します。 $dateを削除し、新しいファイルのみを追加してから、セミコロンを使用してrm {} \;を使用してファイルを削除することもできます。