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

find -execオプションを完全解説!初心者でも理解できるLinuxの検索&コマンド実行術

find -execオプション|検索結果に対して任意のコマンドを実行する
find -execオプション|検索結果に対して任意のコマンドを実行する

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

生徒

「Linuxでファイルを探したあとに、そのまま削除とかってできますか?」

先生

「はい、できますよ。findコマンドの-execオプションを使えば、検索結果に対して任意のコマンドをそのまま実行できます。」

生徒

「なんか便利そうだけど、どうやって使えばいいのか全然わからないです…」

先生

「大丈夫、初心者でも分かるように、これから丁寧に解説していきますね!」

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

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

findコマンドは、Linuxでファイルやディレクトリを検索するためのコマンドです。その中でも-execオプションを使うと、検索結果に対して自動でコマンドを実行することができます。

たとえば、特定の名前のファイルを探して、それを削除したり、圧縮したり、別の場所にコピーしたりといったことが、1つのコマンドでできます。

イメージとしては、「探して見つけたら、そのまま指示通りの作業をしてくれるお手伝いさん」みたいなものです。

2. 基本的な構文を見てみよう

2. 基本的な構文を見てみよう
2. 基本的な構文を見てみよう

findコマンドに-execを使うときの基本形は、次のようになります。


find [検索開始ディレクトリ] [条件] -exec [コマンド] {} \;

{}は「見つかったファイル1つ1つ」を意味し、\;はコマンドの終了を示します。

3. ファイルを検索して削除する例

3. ファイルを検索して削除する例
3. ファイルを検索して削除する例

たとえば、カレントディレクトリ(現在いる場所)から、.logという拡張子のファイルを探して、それを削除したい場合は、次のように書きます。


find . -name "*.log" -exec rm {} \;

この例では、現在のディレクトリ「.」以下を対象に、名前が*.logで終わるファイルを探して、それをrmコマンドで削除しています。

4. 実行結果の確認

4. 実行結果の確認
4. 実行結果の確認

まずは試しにtouchコマンドでログファイルを作成してから、実際に削除してみましょう。


touch test1.log test2.log
ls *.log
test1.log  test2.log
find . -name "*.log" -exec rm {} \;
ls *.log
ls: cannot access '*.log': No such file or directory

このように、ファイルが確かに削除されていることが確認できます。

5. -execとxargsの違い

5. -execとxargsの違い
5. -execとxargsの違い

似たようなことができるコマンドにxargsがありますが、-execは1ファイルごとにコマンドを実行するのに対し、xargsは複数ファイルをまとめて処理します。

たとえば、次のように使います:


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

xargsの方が高速ですが、ファイル名にスペースがあるとエラーになる可能性があります。初心者のうちは、-execの方が安心して使えるでしょう。

6. よく使うオプションの組み合わせ

6. よく使うオプションの組み合わせ
6. よく使うオプションの組み合わせ

ここでは、初心者がよく使うfind -execの組み合わせを紹介します。

① 空のファイルを削除


find . -type f -empty -exec rm {} \;

② 7日以上前に更新されたファイルを削除


find . -type f -mtime +7 -exec rm {} \;

③ 所有者が「user1」のファイルをコピー


find . -user user1 -exec cp {} /tmp/backup/ \;

これらのように、ファイルの種類や更新日時、所有者など、様々な条件で検索して、それに対して任意のコマンドを実行できます。

7. よくある失敗と注意点

7. よくある失敗と注意点
7. よくある失敗と注意点

\;の部分を忘れると、エラーになります。また、{}\;の間にはスペースが必要です。

コマンドの構文を少し間違えただけでも、意図しないファイルを削除する可能性があるので、最初は-exec echoを使って実行内容を確認すると安心です。


find . -name "*.log" -exec echo rm {} \;
./test1.log
./test2.log

このように、rmの代わりにechoを使うことで、削除対象だけを確認できます。

8. sudoやrootでの実行について

8. sudoやrootでの実行について
8. sudoやrootでの実行について

/var/logのような管理者権限が必要な場所で使う場合は、sudoを使う必要があります。たとえば、次のように実行します。


find /var/log -name "*.log" -exec rm {} \;

ただし、管理者権限でファイルを削除するときは慎重に操作してください。

9. まとめの前に知っておきたい豆知識

9. まとめの前に知っておきたい豆知識
9. まとめの前に知っておきたい豆知識

findはファイルを探すだけでなく、-execと組み合わせることで、「探す+処理」が1つの流れでできる非常に強力なLinuxコマンドです。

定期的な掃除やバックアップ、メンテナンス処理を自動化したいときにも役立ちます。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
basenameの--zeroオプションでヌル文字区切り!xargsと安全に連携するLinuxの基本
New2
ファイル・ディレクトリ操作
find -userオプションの使い方を完全ガイド!初心者でもわかる所有者ユーザーでファイルを検索する方法
New3
ファイル・ディレクトリ操作
find -okオプションとは?初心者向けに丁寧解説!Linuxで確認付きコマンド実行をマスターしよう
New4
ファイル・ディレクトリ操作
dirname --zeroオプション|出力をヌル文字で区切る方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cdコマンドとは?Linuxでディレクトリを移動する基本を初心者向けに解説
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門