保存期間のある Bash スクリプト tar 特定のファイル

保存期間のある Bash スクリプト tar 特定のファイル

私は初めて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 {} \;を使用してファイルを削除することもできます。

おすすめ記事