#author("2021-02-08T19:47:47+09:00","default:Miyashita","Miyashita") #author("2021-02-08T19:48:33+09:00","default:Miyashita","Miyashita") *find コマンド メモ [#s1997829] 名の通りいろいろ探せる.~ ファイルをどこに格納したのか,また全部入っているかという時などなど. **ファイル検索 [#c641bd89] #codeprettify(lang-bash){{ find . -name "*.f90" }} で階層下(.)のファイル名が一致するやつ(上記ならf90形式ファイル)を検出し,リストアップする.~ grepとは書く順番が違う.また,デフォルトで再帰的に検索するので grep の-rオプションのようなものは不要.~ ファイル名が完全でない場合はワイルドカード「*」が必要.~ 表示される順番がバラバラのため,sort するのもあり. #codeprettify(lang-bash){{ find . -name "*.f90" | sort -d }} 見つかった個数を表示したいときは wc でカウントする. #codeprettify(lang-bash){{ find . -name "*.f90" | wc -l }} 階層の深さを指定したい時は maxdepth を使う. #codeprettify(lang-bash){{ find . -maxdepth 3 -name "*.f90" }} さらに,キーワードを複数指定したいときは #codeprettify(lang-bash){{ find . -type f \( -iname "*.bz2" -o -iname "*.zip" \) find . -type f \( -iname "*.f90" -o -iname "*.F" \) }} キーワードを指定しつつ,特定の文字列 '.git' をもつファイル名を除外したいときは #codeprettify(lang-bash){{ find . ! -path "*.git*" -type f \( -iname "*.bz2" -o -iname "*.zip" \) find . ! -path "*.git*" -type f \( -iname "*.f90" -o -iname "*.F" \) }} ~ ~ **ディレクトリ検索 [#u367ef88] ディレクトリ名を検出するには,パイプで渡してgrepを使うとできる~ 一発で済む方法もありそうだが知らない. #codeprettify(lang-bash){{ find . -type d | grep dirname }} 奥の階層までディレクトリ検索する必要がない時は,maxdepth オプションを使う.~ ワンライナーを書くときに使える. #codeprettify(lang-bash){{ # -maxdepth 1 はディレクトリの中のディレクトリを検索しない find . -maxdepth 1 -type d | grep dirname }} maxdepth はオプションの位置が重要で,上のような位置で指定しないと正しく動作しないので注意. **ライブラリ等のファイルを検索 [#la14e0fe] ライブラリのファイルのありかを知りたいときは, find コマンドより locate コマンドの方が良い.