Linuxで実行ファイルをfindで探す方法
Linuxの find コマンドは、ファイルを検索するために利用するコマンドです。 find は、様々な条件でファイルを検索できます。実行ファイルだけを検索したい場合があり、今回は、実行ファイル(xがたってるファイル)を検索する例を紹介します。
読み方
- find
- ふぁいんど
- ELF
- いーえるえふ
概要
シェルの上でコマンドがどこにあるのか調べるために、よく使われるのは which/where/whence のビルトインコマンドでしょう。それらのコマンドは、パスが通っていて、 x ビットがたってるファイルを検索してくれます。補足になりますが、 x ビット とは、実行権限 のことで、x ビット のたっているコマンドが実行できます。 以下は、which コマンド で cc コマンドのパスを探す例です。
$ which cc /usr/bin/cc
ここでは、パスが通ってる、通ってないに関わらず、 x ビットがたっているファイルや ELF のファイルを検索する、といったシーンでの検索方法を紹介します。
実行ファイル というと実行できるファイルのことで、主に以下のものがあります。
- ELF のファイル
- x ビットがたってるスクリプト
find コマンドで、実行ファイルを見つける方法として、パーミッションの実行フラグがたっているかどうか、が鍵になります。 x がたってるファイルは
- ファイル
- ディレクトリ
の二種類があります。
レギュラーファイル(通常のファイル) を検索するには、
-type f
を指定することで、絞込ができます(ディレクトリを排除できる)。
実行可能という条件は
- -executable
- パーミッション -perm /u=x,g=x,o=x
で指定できます。コマンドラインで指定する場合は、 -executable が簡単でしょう。Zsh などが補完してくれます。
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
関連項目
ツイート