documents:other:memo02:other-050
Unixで指定パス直下のディレクトリを日時指定で消す
2026/03/22
また聞かれそうなのでメモで残す。
findコマンドでやっちゃえばいいよ
最初にその「日時」はどの意か確認
ディレクトリやファイルの日付は種類があって
- 作成日時:btime, birth time
そのファイル・ディレクトリが作成された日時。内容の書換えやディレクトリ内にファイルコピー等行われても変更はない。 - 更新日時:mtime, modification time
ファイルへの追記や書き換えを行ったときの日時。ディレクトリだとファイル数/ディレクトリ数の増減やリネームがあった時の日時。 - 参照日時:atime, access time
ファイルをプログラムでオープンしたときの日時。catやviの対象になった時も更新が入る。 - 変更日時:ctime, status change time
パーミッションや所有者の変更が行われたときの日時。
がある。
自分が処理する日時がどれなのかを認識しておかないと正しい結果を得られない。
参照日時は環境によっては更新が入らず使えない場合がある。
更新日時は、
- ファイルの更新日時はその内容を変更した際に変更される。
- ディレクトリの更新日時は配下のファイル数/ディレクトリ数の増減やリネームがあれば変更がかかる。ファイル内容変更や更に下階層のディレクトリ内容変更では変更されない。
になる。作成日時と混同しないように。
対象が正しく選択されたか確認する
消す対象を正しく選択出来ているか試す。※事故りたくないよな?
find /path/to/root -type d -mindepth 1 ! -newermt "2026-03-01 12:00:00" -ls
この例は、findコマンドでディレクトリ /path/to/root に存在するディレクトリ直下のサブディレクトリで更新日時が2026-03-01 12:00:00以前のものを一覧表示する。
| # | 引数 | 説明 |
|---|---|---|
| 1 | /path/to/root | ディレクトリ検索開始パス |
| 2 | -type d | 選択対象をディレクトリに指定 |
| 3 | -mindepth 1 | #1の直下が対象の意(0は#1自身を含む。1は#1自身を含めない) |
| 4 | ! | 次のオプションの意を反転する(#5の意の反転) |
| 5 | -newermt “2026-03-01 12:00:00” | 更新日時が 2026-03-01 12:00:00 より新しい ※ mtime > 2026-03-01 12:00:00 |
| 6 | -ls | 選択対象を ls -dils 相当の書式で表示 |
#2はディレクトリを対象とする指定。-type f ならファイルの意になる。
#3は#1を処理対象にしたくないから。
#5の意は 「mtime > 2026-03-01 12:00:00」の指定で、#4は#5の反転を意味しており結果「mtime ≦ 2026-03-01 12:00:00」の指定になる。日時を明示するならこの方法しかない。
#6の書式以外の出力は「-printf '%TY-%Tm-%Td %p\n'」のような書式指定オプションを適用する。
対象を削除する
消す対象を正しく選択出来ているなら削除を実施する。
find /path/to/root -type d -mindepth 1 ! -newermt "2026-03-01 12:00:00" -exec rm -rf {} +
この例は、findコマンドでディレクトリ /path/to/root に存在するディレクトリ直下のサブディレクトリで更新日時が2026-03-01 12:00:00以前のものを削除する。
| # | 引数 | 説明 |
|---|---|---|
| 1 | /path/to/root | ディレクトリ検索開始パス |
| 2 | -type d | 選択対象をディレクトリに指定 |
| 3 | -mindepth 1 | #1の直下が対象の意(0は#1自身を含む。1は#1自身を含めない) |
| 4 | ! | 次のオプションの意を反転する(#5の意の反転) |
| 5 | -newermt “2026-03-01 12:00:00” | 更新日時が 2026-03-01 12:00:00 より新しい ※ mtime > 2026-03-01 12:00:00 |
| 6 | -exec rm -rf {} + | 選択対象を削除する |
#6は「-delete」でもよさそうだがディレクトリが空じゃないと消せないので。オールドスタイルな指定になる。
documents/other/memo02/other-050.txt · 最終更新: by k896951
