
Ubuntu日本語フォーラム

ログインしていません。
トップレベルからの検索で、
//# fine -name *png
では、目的のディレクトリ内に、いろいろヒットするんですが、
ディレクトリ途中からの検索だと、ヒットしません
/usr/local/bin/Qt# find -name *png
これは何故でしょうか?
オフライン
findには本来[starting-point...]というパラメータがあって、findの検索を開始する起点を(複数)指定出来ます。
一部のマニュアルでは、この"[starting-point...]"を"パス名[...]"として説明しているようです。
taku_s による投稿:
//# fine -name *png
/usr/local/bin/Qt# find -name *png
上記は、このfindの検索を開始する起点が指定されておらず、省略時解釈として起点にカレントディレクトリを使用します(特に"find (GNU findutils)"の場合)
そのため、上記の1つ目はルートディレクトリを、2つ目は/usr/local/bin/Qtを起点に検索をします。
1つ目に結果出力があって2つ目にないのは、(断定は出来ませんが)/usr/local/bin/Qt以外のところにpngのファイル(ないしはpngを含むパス)はあるのでそれがルートからの検索で見えて、/usr/local/bin/Qt配下にはpngを名前に含むファイルやパスなかったからではないでしょうか?
それと、拡張子がpngのファイルをfindで見つけるのであれば、ディレクトリを排除したほうがいいので以下の書き方をほうがいいかと思います。
find <検索開始起点ディレクトリ> -type f -name "*png"
-type f は対象をファイルだけに限定します。つまりABCD/EFGH/abcd.png/のような名前にpngを含むけど実体はディレクトリなものを除外してくれます。
("*png"としたのは、-nameパラメータに対するパターン指定を明確にしたかっただけです)
参考となるリンク
- Manpage of find( https://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html )
- UNIX/Linuxの部屋 findコマンドの使い方( http://x68000.q-e-d.net/~68user/unix/pickup?find )
オフライン
kznjさま
説明いただきありがとうございました。
どうも問題のディレクトリの上からも、下からも全ディレクトリの検索が出来ましたので、
このディレクトリだけが何か特別なのかと思います。
ありがとうございました。
オフライン