【Ubuntu】find の安全な使い方:削除で事故らない
この記事で解決できること
findの基本的な探し方(名前、拡張子、更新日時、サイズ)が分かりますfindで削除するときに事故らない手順(まず一覧→確認→削除)が分かりますxargsと組み合わせるときの安全策(-print0/xargs -0)が分かります
💡 結論(最短)
削除系はこの順番が鉄則です。
- まず一覧だけ出す(削除しない)
- 件数を確認する(思ったより多い時点で止まる)
- 安全な形で削除する(可能なら
-print0/xargs -0)
⚠️ 前提(対象環境)
- OS:Ubuntu
- シェル:bash
- 権限:必要なら
sudo(システム領域を触る場合など)
1. find の基本(まずは探す)
1-1. 名前で探す(完全一致)
$ find . -name "error.log"
1-2. 拡張子で探す(例:.log)
$ find . -name "*.log"
1-3. 大文字小文字を無視して探す
$ find . -iname "*.log"
1-4. ファイルだけ / ディレクトリだけ
$ find . -type f -name "*.log" # ファイルだけ $ find . -type d -name "cache" # ディレクトリだけ
2. よく使う条件:更新日時・サイズで絞る
2-1. 直近7日以内に更新されたファイル
$ find . -type f -mtime -7
2-2. 30日より古いファイル
$ find . -type f -mtime +30
2-3. 100MBより大きいファイル
$ find . -type f -size +100M
💡 ディスク逼迫調査で「重いファイル」を探すときに便利です。
3. 削除前の鉄則:まず「一覧」と「件数」
3-1. 一覧を出す(削除しない)
例:/var/log 配下の .log を探す(※必要なら sudo)
$ sudo find /var/log -type f -name "*.log"
3-2. 件数を確認する(思ったより多いならここで止める)
$ sudo find /var/log -type f -name "*.log" | wc -l
💡 ここで件数が想定より多いなら、条件が広すぎます。-mtime や -size を足して絞ってください。
4. 「削除」の安全なやり方(初心者向けの型)
削除は一発事故が起きるので、手順を固定するのがおすすめです。
4-1. まずは絞り込み(例:30日より古い .log)
$ sudo find /var/log -type f -name "*.log" -mtime +30
4-2. 次に件数確認
$ sudo find /var/log -type f -name "*.log" -mtime +30 | wc -l
4-3. それでもOKなら削除(安全策付き)
パスにスペースが混じっても壊れないように、-print0 と xargs -0 を使います。
$ sudo find /var/log -type f -name "*.log" -mtime +30 -print0 | sudo xargs -0 rm -f
-print0:結果をヌル文字区切りで出す(スペースや改行が混じっても安全)xargs -0:ヌル文字区切りを正しく受け取る
rm -f は強いので、最初は「削除せず表示」→「件数」→「削除」の順番を必ず守ってください。
-delete は使っていい?(結論:慎重に)
find ... -delete はシンプルですが、条件をミスると即事故ります。
# 理解している場合のみ使用 $ sudo find /tmp -type f -mtime +7 -delete
初心者向けには、まず -print0 | xargs -0 rm の型で慣れるのが安全です。
5. よくある落とし穴(ここで事故る)
❌ パスを間違える(/ と ./ の違い)
find / ...はシステム全体に効くので、初心者のうちは慎重に- まずは対象ディレクトリを
pwdとlsで確認してから実行
$ pwd $ ls -la
❌ 条件が広すぎる
*.log だけだと多すぎることがあります。-mtime や -size を足して絞るのが基本です。
例:30日より古く、かつ 10MB 以上
$ sudo find /var/log -type f -name "*.log" -mtime +30 -size +10M
❌ スペース/改行入りのファイル名で壊れる
これが -print0 / xargs -0 を使う最大の理由です。
6. 確認(削除後にチェック)
削除後はディスク使用量を確認します。
$ df -h
📋 検証環境
本記事のコマンドは Ubuntu 24.04 LTS / bash 5.2 で動作確認済みです。