created: 2021-03-10T06:38:49.000Z

つくられてから1時間以上経った未圧縮のファイルだけを削除する

こんなことをしたい場合

  • 最終更新が60分前になっているファイル
  • 名前が"*.zst"という形式ではないファイル (未圧縮)
  • それらに対して /usr/local/bin/zstd --rm を実行する
/usr/bin/find /path/to/files \
  -type f \
  -mmin +60 \
  ! -name "*.zst" \
  -exec /usr/local/bin/zstd --rm {} \; \

オプション

  • -type f
    • ディレクトリでなくファイルだけを対象にする
  • -mmin +60
    • 最後に内容が変わったのが60分以上過去のファイルを対象とする
  • ! -name "*.zst"
    • 名前が *.zst でないファイルを対象とする
  • -exec /usr/local/bin/zstd --rm {}
    • それらのファイルに zstd --rm を実行する
    • 実行時には {} がファイル名に置き換わる

cron

cronするなら /bin/bash -c とすると手っ取り早い

*/10 * * * * appuser /bin/bash -c '\
  /usr/bin/find /path/to/files \
    -type f \
    -mmin +60 \
    ! -name "*.zst" \
    -exec /usr/local/bin/zstd --rm {} \; \
'

参考