一定時間経過したフォルダを削除するスクリプト
| 登録日 | :2025/04/21 04:53 |
|---|---|
| カテゴリ | :Linux |
以下のフォルダのうち、10以上経過しているフォルダを削除するシェルスクリプトを作成したい。
drwxr-xr-x. 2 root root 43 3月 15 07:47 I_62
drwxr-xr-x. 2 root root 100 3月 15 07:44 B_63
drwxr-xr-x. 2 root root 100 3月 15 07:52 B_64
drwxr-xr-x. 2 root root 100 3月 15 07:54 B_65
drwxr-xr-x. 2 root root 100 3月 15 08:00 B_66
drwxr-xr-x. 2 root root 100 3月 15 08:07 I_67
drwxr-xr-x. 2 root root 53 3月 15 08:20 I_68
drwxr-xr-x. 2 root root 53 3月 15 16:05 B_69
drwxr-xr-x. 2 root root 100 3月 15 16:08 B_70
drwxr-xr-x. 2 root root 100 3月 15 16:33 E_71
drwxr-xr-x. 2 root root 53 3月 15 17:22 E_72
-rw-r--r--. 1 root root 300 3月 30 18:56 log_file.log
サンプルスクリプト
#!/bin/bash
DAYS=9
# カレントディレクトリ内の「数字だけの名前」のディレクトリで
# 10日以上前のものを削除
find . -maxdepth 1 -type d -regex './[0-9]+' -mtime +$DAYS -exec rm -rf {} \;
# カレントディレクトリ直下の「I_」「B_」「E_」で始まるディレクトリが
# 10日以上前に更新されていた場合に削除します
find . -maxdepth 1 -type d -regextype posix-egrep -regex './[IBE]_[0-9]+' -mtime +$DAYS -exec rm -rf {} \;
# I_ / B_ / E_ で始まり、その後に2桁以上の数字が続くディレクトリを
# 10日以上前に更新されていた場合に削除します
find . -maxdepth 1 -type d -regextype posix-extended -regex './[IBE]_[0-9]{2,}' -mtime +9 -exec rm -rf {} \;
削除前に確認したい場合、-printにする。
find . -maxdepth 1 -type d -regextype posix-extended -regex './[IBE]_[0-9]{2,}' -mtime +9 -print
find . -maxdepth 1: カレントディレクトリ直下のみを検索
-type d: ディレクトリのみ対象
-regex './[0-9]+': 「数字のみ」のディレクトリ名だけを対象(例: 62, 63, ...)
-mtime +9: 最終更新(または作成)から10日以上経過したもの(+9は「9日より大きい=10日以上」)
-exec rm -rf {} \;: 見つかったディレクトリを削除
-maxdepth 1
カレントディレクトリ直下のみ対象
-type d
ディレクトリのみ対象
-regextype posix-egrep
拡張正規表現を使用
-regex './[IBE][0-9]+'
「I」「B_」「E_」いずれかで始まり、その後に数字が続く名前のディレクトリのみ対象
-mtime +9
10日以上前に最終更新されたもの(+9は「9日より大きい=10日以上」)
-exec rm -rf {} \;
-regextype posix-extended
拡張正規表現を利用({2,} が使える)
-regex './[IBE][0-9]{2,}'
「I」「B_」「E_」で始まり、2桁以上の数字が続くディレクトリを対象
例: I_62, B_123, E_4567, I_99999 など