Perl開発者のためのLinux入門

findコマンド - ディレクトリの再帰的な検索

findコマンドを使うと、ディレクトリの再帰的な検索を行うことができます。

find ディレクトリ名

「/usr/local/lib」以下を検索するサンプルです。

find /usr/local/lib

出力結果のサンプルです。

/usr/local/lib
/usr/local/lib/liblept.so.3.0.0
/usr/local/lib/liblept.so.3
/usr/local/lib/liblept.so
/usr/local/lib/liblept.la
/usr/local/lib/liblept.a
/usr/local/lib/libtesseract.so.3.0.2
/usr/local/lib/libtesseract.so.3
/usr/local/lib/libtesseract.so
/usr/local/lib/libtesseract.la
/usr/local/lib/libtesseract.a
/usr/local/lib/pkgconfig
/usr/local/lib/pkgconfig/tesseract.pc

findコマンドの内容を絞り込む

grepコマンドと組み合わせると、findコマンドの内容を絞り込むことができます。

find /usr/local/lib | grep pkg

出力結果のサンプルです。

/usr/local/lib/pkgconfig
/usr/local/lib/pkgconfig/tesseract.pc

隠しファイルを含まないカレントディレクトリを指定

現在ディレクトリにGitが使う「.git」などの隠しディレクトリがあって、これを含みたくない場合はワイルドカード「*」を使うのが便利です。カレントディレクトリの隠しファイル以外が対象になります。

find *

ファイルの種類を指定する

findコマンドでは「-type」オプションでディレクトリや通常ファイルなど、ファイルの種類を指定することができます。

通常ファイル

f指定で、ディレクトリやシンボリックリンクを含まない通常ファイルだけを取り出します。

find -type f ファイル名

ディレクトリファイル

d指定で、ディレクトリだけを取り出します。

find -type d ファイル名

タイプの一覧

タイプで指定でいるファイルの種類のの一覧です。

bブロック (バッファ) 特別
c文字 (バッファなし) 特別
dディレクトリ
p名前付きパイプ (FIFO)
f通常ファイル
lシンボリックリンク;-L オプションまたは -follow の場合、これは決して当てはまりません シンボリック・リンクが壊れていない限り、オプションは有効です。 もしあなたなら -L が有効な場合にシンボリック リンクを検索する -xtype.
sソケット

実行ファイルだけに絞り込む

実行ファイルだけに絞り込むにはf指定に加えて「-executable」を指定します。

find -executable -type f ファイル名