カテゴリ: Linuxコマンド集 更新日: 2026/02/24

find -deleteオプションを完全解説!初心者でもできるLinuxファイル削除の基本

find -deleteオプション|検索結果を削除する方法
find -deleteオプション|検索結果を削除する方法

先生と生徒の会話形式で理解しよう

生徒

「findコマンドでいらないファイルを探せたんですが、それを一気に削除する方法ってありますか?」

先生

「ありますよ!-deleteオプションを使えば、検索結果をそのまま削除することができます。」

生徒

「それって危なくないですか?間違って大事なファイルまで消しちゃいそうで…」

先生

「確かに慎重に使う必要はありますが、安全な使い方を覚えればとても便利ですよ。一緒に学んでみましょう。」

1. find -deleteオプションとは?

1. find -deleteオプションとは?
1. find -deleteオプションとは?

findコマンドの-deleteオプションは、検索で見つけたファイルやディレクトリをそのまま削除する機能です。つまり「探して→削除する」を1つのコマンドで完了できます。

-exec rm {} \;のようにrmコマンドと組み合わせる必要がなく、よりシンプルに書ける点が魅力です。

2. 基本的な使い方

2. 基本的な使い方
2. 基本的な使い方

たとえば、カレントディレクトリから.logという拡張子のファイルを削除したい場合、次のように書きます。


find . -name "*.log" -delete

これだけで、現在のフォルダ以下にある.logファイルがすべて削除されます。とても簡単ですが、間違えると大事なデータを消してしまうこともあるので、実行前に確認するクセをつけましょう。

3. 実行前に確認する方法(-printとの併用)

3. 実行前に確認する方法(-printとの併用)
3. 実行前に確認する方法(-printとの併用)

-deleteを実行する前に、まずは何が削除されるのかを-printで確認すると安心です。


find . -name "*.log" -print
./error.log
./old/system.log

上記のように表示されたファイルを確認して問題がなければ、同じ条件に-deleteを付けて実行します。


find . -name "*.log" -delete

4. ファイルだけを削除したい場合

4. ファイルだけを削除したい場合
4. ファイルだけを削除したい場合

-deleteは、ディレクトリも削除対象になることがあります。ファイルだけに限定したいときは、-type fオプションを追加しましょう。


find . -type f -name "*.tmp" -delete

このコマンドは、.tmpという拡張子のファイルだけを安全に削除します。-type fは「通常のファイルのみ」を対象にする指定です。

5. 空のディレクトリだけを削除したい場合

5. 空のディレクトリだけを削除したい場合
5. 空のディレクトリだけを削除したい場合

今度は、不要になった空のフォルダだけを削除したいケースです。そんなときは-type d(ディレクトリ)と-empty(中身が空)を組み合わせて使います。


find . -type d -empty -delete

これは非常に便利で、ログ出力先や一時フォルダの掃除などに活用できます。

6. -delete使用時の注意点

6. -delete使用時の注意点
6. -delete使用時の注意点
  • 検索対象のパスは、なるべく限定すること(例:find /home/user/tmpなど)
  • -deleteは最後に書くこと(findは処理順に実行するため)
  • 確認せずに実行しない-printなどで事前確認が必須)

たとえば、次のように書いてしまうと、削除対象が思ったより広くなってしまうことがあります。


find . -delete -name "*.log"

このような順番だと、findはまずすべてを削除してしまい、そのあとに-name "*.log"を見ても意味がありません。

7. xargsとの違いとメリット

7. xargsとの違いとメリット
7. xargsとの違いとメリット

findコマンドとxargsを組み合わせる方法もありますが、-deleteはそれよりも簡潔です。


find . -name "*.bak" | xargs rm

この方法は安全性にやや欠ける場合があり、ファイル名にスペースがあると失敗することもあります。その点で-deleteは初心者にも扱いやすい選択肢です。

8. sudoやrootでの削除

8. sudoやrootでの削除
8. sudoやrootでの削除

システムディレクトリ内の不要ファイルを削除するには、sudoroot権限が必要な場合があります。たとえば、/var/log内の古いファイルを削除したいとき:


find /var/log -name "*.gz" -mtime +30 -delete

これは、30日より古い圧縮ログファイル(.gz)を自動で削除します。保守作業としてもよく使われる例です。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
find -deleteオプションを完全解説!初心者でもできるLinuxファイル削除の基本
New2
ファイル・ディレクトリ操作
mv --helpオプションの使い方|Linuxでmvコマンドの使い方やオプションを確認する方法
New3
ファイル・ディレクトリ操作
rm --versionオプションの使い方!Linuxでバージョン情報を確認する方法を初心者向けに解説
New4
テキスト・データ処理
grep -wオプション|単語単位で検索する使い方を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
basenameの--helpオプションを使ってヘルプ表示!オプション一覧でLinuxコマンドを理解しよう
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
dirname --helpオプション|ヘルプを表示してオプション一覧を確認する
No.4
Java&Spring記事人気No4
テキスト・データ処理
grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!