親ディレクトリがbbb
であるディレクトリ名aaa
のパスを見つけたい
例えば
/aaa/bbb
/tmp/aaa/bbb
/usr/bin/aaa/bbb
/home/aaa/bbb
/home/aaa/xxx/bbb
だから私はこのようなものを書きました:
find /*/aaa -name bbb
一部のプラットフォームでは機能し、一部のプラットフォームでは機能しません。また、aaa
への親ディレクトリがないため、/aaa/bbb
が見つかりません。
find / -name bbb | grep \/aaa
は実行できると思いますが、もっと賢いものがあると思います。
この場合は-path
オプションを使用します。
find / -type d -path '*/aaa/bbb'
Findのmanページから:
ファイル名はシェルパターンパターンと一致します。メタ文字は
/
または.
を特別に扱いません。たとえば、
find . -path "./sr*sc"
`./src/misc 'というディレクトリ(存在する場合)のエントリを出力します。
使用しているfind
のバージョンを指定するのではなく、上記の情報はGNU findに適用されます。ただし、manページには、
述語-pathはHP-UX findでもサポートされており、POSIX標準の次期バージョンに含まれる予定です。
したがって、-path
はHP-UXでは使用できますが、AIXでは使用できません(少なくとも AIX 7.1以外 、2015-08-24の最新リリース)。
/ */aaaは/ aaaと一致せず、これがfindが/ aaa/bbbを見つけられない理由です
/で検索を開始したくない場合、および-pathをサポートするポータブルsfindのような最近の検索がない場合は、より良い手動の開始リストが必要です。