条件付きの単一行で検索、圧縮、削除

条件付きの単一行で検索、圧縮、削除

昨日生成されたファイルを条件に応じて圧縮、移動、削除したファイルを繰り返し探すスクリプトを一行に減らそうとします。

私は次の構造を持っています:

../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}\*

欠落している二重引用符とアスタリスクをエスケープする必要があることに注意してください。

おすすめ記事