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

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)を自動で削除します。保守作業としてもよく使われる例です。

まとめ

まとめ
まとめ

findコマンドのdeleteオプションは、Linux環境におけるファイル削除の効率化において非常に重要な役割を持つ機能です。通常、ファイル検索と削除は別々のコマンドで行うことが一般的ですが、このオプションを活用することで、検索結果をそのまま削除することができるため、作業の手間を大幅に削減できます。特にログファイルの整理や一時ファイルの削除など、日常的な運用作業において高い効果を発揮します。

Linux初心者にとっては、一括削除という言葉に不安を感じるかもしれません。しかし、printオプションを使って事前確認を行う習慣を身につけることで、安全に操作することが可能です。findコマンドは柔軟性が高く、条件指定を細かく設定できるため、削除対象を正確に絞り込むことができます。例えば、拡張子による絞り込みや更新日時による条件指定を組み合わせることで、必要なファイルだけを確実に削除することができます。

また、typeオプションを使うことで、ファイルのみ、またはディレクトリのみといった対象の制御が可能になります。これにより、誤って重要なディレクトリを削除してしまうリスクを回避できます。emptyオプションと組み合わせれば、空のディレクトリだけを削除することもでき、システムの整理整頓にも役立ちます。

実務の現場では、定期的なメンテナンス作業として古いログファイルの削除が求められる場面が多くあります。mtimeオプションと組み合わせることで、一定期間が経過したファイルのみを対象にすることができ、無駄なディスク使用を防ぐことができます。以下に、実際の運用を想定したサンプルを示します。


find . -type f -name "*.log" -print
./app.log
./old/error.log

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

上記のように、まず対象ファイルを確認してから削除を実行する流れを徹底することで、安全性を確保できます。さらに、システム領域の操作ではroot権限が必要になるため、権限の違いを理解することも重要です。


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

このようなコマンドは、サーバー運用やインフラ管理において頻繁に利用されるため、Linuxコマンドの中でも実践的なスキルとして身につけておく価値があります。また、xargsとの違いを理解することで、より安全で確実な削除処理を選択できるようになります。特にファイル名に空白が含まれる場合などは、deleteオプションの方が安定した動作をします。

findコマンドのdeleteオプションを正しく使いこなすことで、ファイル管理の効率が飛躍的に向上します。Linuxの基本操作としてだけでなく、システム管理や自動化スクリプトの作成にも応用できるため、しっかりと理解しておきましょう。日々の運用に取り入れることで、作業の正確性とスピードの両方を高めることができます。

先生と生徒の振り返り会話

生徒

findコマンドのdeleteオプションって便利ですね。検索してそのまま削除できるので、作業がかなり楽になると感じました。でもやっぱり少し怖い気もします。

先生

その感覚はとても大切です。便利なコマンドほど慎重に扱う必要があります。だからこそ、printオプションで確認してから実行するという手順を必ず守るようにしましょう。

生徒

typeオプションを使うとファイルだけに限定できるのも安心ですね。ディレクトリまで削除される可能性があるとは知りませんでした。

先生

そうですね。type fやtype dを使い分けることで、削除対象を正確に制御できます。これは実務でも非常に重要なポイントです。

生徒

あと、古いログファイルを削除する方法は実際の現場でも役立ちそうです。サーバー管理で使われるイメージが湧きました。

先生

その通りです。mtimeオプションと組み合わせることで、一定期間経過したファイルだけを削除できます。これはディスク容量の管理にもつながります。

生徒

xargsとの違いも理解できました。deleteオプションの方がシンプルで安全に使える場面が多いですね。

先生

そうですね。用途に応じて使い分けることが大切ですが、初心者のうちはdeleteオプションを中心に覚えておくとよいでしょう。今回学んだ内容は、Linux操作の中でも実践的で役立つ知識です。繰り返し使ってしっかり身につけてください。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Linux初心者ですがfindコマンドの-deleteオプションとは何ですか?ファイル削除の基本も知りたいです

findコマンドの-deleteオプションは、検索結果に一致したファイルやディレクトリをそのまま削除できる便利な機能です。Linuxファイル削除の基本として、探すと削除を一度に実行できるため、作業効率が大きく向上します。
関連記事:
カテゴリの一覧へ
新着記事
New1
テキスト・データ処理
cat -Tオプションとは?Linuxでタブ文字を「^I」として見える化する方法
New2
Linuxコマンドの基本
Linuxとは?初心者向けにできること・特徴・導入方法をやさしく解説
New3
テキスト処理とフィルタ
tailコマンドの使い方!ログ監視で便利な末尾表示コマンド
New4
ファイル・ディレクトリ操作
touch --referenceオプションの使い方を完全ガイド!初心者でもわかるタイムスタンプのコピー方法
人気記事
No.1
Java&Spring記事人気No1
テキスト・データ処理
catコマンドとは?Linuxでファイル内容を表示・連結する基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
pwdコマンドとは?初心者でもわかる現在の作業ディレクトリの確認方法を解説!
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門