find コマンド メモ

名の通りいろいろ探せる.
ファイルをどこに格納したのか,また全部入っているかという時などなど.

ファイル検索

find . -name "*.f90"

で階層下(.)のファイル名が一致するやつ(上記ならf90形式ファイル)を検出し,リストアップする.
grepとは書く順番が違う.また,デフォルトで再帰的に検索するのでgrepの-rオプションのようなものは不要.
ファイル名が完全でない場合はワイルドカード「*」が必要.
表示される順番がバラバラのため,sortするのもあり.

find . -name "*.f90" | sort -d

見つかった個数を表示したいときはwcでカウントする.

find . -name "*.f90" | wc -l

階層の深さを指定したい時は maxdepth を使う.

find . -maxdepth 3 -name "*.f90"



ディレクトリ検索

ディレクトリ名を検出するには,パイプで渡してgrepを使うとできる
一発で済む方法もありそうだが知らない.

find . -type d | grep dirname

奥の階層までディレクトリ検索する必要がない時は,maxdepth オプションを使う.
ワンライナーを書くときに使える.

# -maxdepth 1 はディレクトリの中のディレクトリを検索しない
find . -maxdepth 1 -type d | grep dirname

maxdepth はオプションの位置が重要で,上のような位置で指定しないと正しく動作しないので注意.

ライブラリ等のファイルを検索

ライブラリのファイルのありかを知りたいときは, find コマンドより locate コマンドの方が良い.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2020-10-22 (Thu) 16:40:15 (92d)