昨日生成されたファイルを条件に応じて圧縮、移動、削除したファイルを繰り返し探すスクリプトを一行に減らそうとします。
私は次の構造を持っています:
../main -> child1 (content: file01.csv, file02.xlsx, file03_20201028.xls, file04_20201028.xls)
|____ child2 (content: file05.xls, file06.xlsx, file07_20201028)
|___ child3 (file08.xls, file09.xlsx, file10_20201028.xls, file11_20201028.xls)
私はこれをしました:
find $ORIGINPATH -type f -mtime -1 | zip -@ $ORIGINPATH/Backup_$YESTERDAY.zip
find $ORIGINPATH -type f -iname *$YESTERDAY* -exec rm -f {} \;
mv $ORIGINPATH/Backup_$YESTERDAY.zip $DESTINATIONPATH
名前に日付を含むファイルを削除し、残りを保持する必要があります。
よろしくお願いします!
答え1
1行の場合は、次のように動作します。
find $ORIGIN -type f -mtime -1 -exec zip -u ${DEST}/backup_${YESTERDAY}.zip '{}' \; -delete
zip
既存のアーカイブは通常更新されるため、最初のファイルでエラーが発生します-u
(存在しない場合はアーカイブを作成して警告を返します)。
-mtime -1
日付は重要ではありませんが、過去24時間は重要です!したがって、23:59hで実行すると削除されます。今日のドキュメント!日付文字列を検索するには、次のオプションを使用します。
文字列が次のように定義されているとします。YESTERDAY=20201028
find $ORIGIN -type f -name \*${YESTERDAY}\*
欠落している二重引用符とアスタリスクをエスケープする必要があることに注意してください。