Linuxで実行ファイルをfindで探す方法

提供: Ubuntu入門
移動: 案内検索
スポンサーリンク

Linuxfind コマンドは、ファイルを検索するために利用するコマンドです。 find は、様々な条件でファイルを検索できます。実行ファイルだけを検索したい場合があり、今回は、実行ファイル(xがたってるファイル)を検索する例を紹介します。

読み方

find
ふぁいんど
ELF
いーえるえふ

概要

シェルの上でコマンドがどこにあるのか調べるために、よく使われるのは which/where/whence のビルトインコマンドでしょう。それらのコマンドは、パスが通っていて、 x ビットがたってるファイルを検索してくれます。補足になりますが、 x ビット とは、実行権限 のことで、x ビット のたっているコマンドが実行できます。 以下は、which コマンド で cc コマンドのパスを探す例です。

$ which cc
/usr/bin/cc

ここでは、パスが通ってる、通ってないに関わらず、 x ビットがたっているファイルや ELF のファイルを検索する、といったシーンでの検索方法を紹介します。

実行ファイルとは?

実行ファイル というと実行できるファイルのことで、主に以下のものがあります。

  • ELF のファイル (もちろん、ELFのファイルも x ビットがたってます)
  • x ビットがたってるスクリプト

findコマンドで実行ファイルを探すには?

find コマンドで、実行ファイルを見つける方法として、パーミッションの実行フラグがたっているかどうか、が鍵になります。 x がたってるファイルは

  • ファイル
  • ディレクトリ

の二種類があります。

レギュラーファイル(通常のファイル) を検索するには、

-type f

を指定することで、絞込ができます(ディレクトリを排除できる)。

実行可能という条件は

  • -executable
  • パーミッション -perm /u=x,g=x,o=x

で指定できます。コマンドラインで指定する場合は、 -executable が簡単でしょう。Zsh などが補完してくれます。一方で -perm オプションの良さは、オーナ、グループ、その他を細かく指定できるところです。

x のたってる実行可能なファイルの探し方

さて、実際に、実行可能なファイルを検索してみましょう。

find . -executable -type f
find . -perm /u=x,g=x,o=x -type f

以下のコマンドラインの場合、実行可能(x)なファイルが見つかるので、ディレクトリも対象になります。

find . -executable

ELF だけを検索する

上記までの例では、x ビットがたってるファイルが対象になるため、 x のたってる hoge.sh みたいなファイルも引っかかります。

Linux の実行ファイルは、 ELF ファイルフォーマットです。

ELF なファイルだけを検索する場合には、条件が増え、 file コマンドを利用し、さらに grep で絞り込む必要があります。

find . -executable -type f -exec file {} \; | grep -i elf
find . -exec file {} \; | grep -i elf

まとめ

  • ELFやスクリプトなどの実行可能なファイルは、 find . -executable -type f で検索できます。
  • ELF だけを探したい場合は、 find と grep を組み合わせて探します。
    find . -executable -type f -exec file {} \; | grep -i elf

関連項目



スポンサーリンク