お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2019-03-16 07:21:06

taku_s
メンバ
登録日: 2008-12-14

find -nameについて

トップレベルからの検索で、
//# fine -name *png
では、目的のディレクトリ内に、いろいろヒットするんですが、
ディレクトリ途中からの検索だと、ヒットしません
/usr/local/bin/Qt# find -name *png

これは何故でしょうか?

オフライン

 

#2 2019-03-16 17:52:39

kznj
メンバ
登録日: 2013-12-03

Re: find -nameについて

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 )

オフライン

 

#3 2019-03-16 23:00:10

taku_s
メンバ
登録日: 2008-12-14

Re: find -nameについて

kznjさま
説明いただきありがとうございました。
どうも問題のディレクトリの上からも、下からも全ディレクトリの検索が出来ましたので、
このディレクトリだけが何か特別なのかと思います。

ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB