コマンドにはいくつかの問題がありますfind
。その構文を理解していないため、どこにでも配置できる特定のディレクトリ構造を見つけるには、スクリプトでこのコマンドを使用する必要があります。
基本的に私は "project/dir1/dir2"のような構造を持ち、常に同じ名前の3つのディレクトリが順番に存在することを知っています。違いは、この構造がどれだけ深くネストされているかです。たとえば、次のようになります。
$HOME/project/dir1/dir2
または
$HOME/workspace/project/dir1/dir2
project/dir1/dir2
基本的に、構造物がどれほど深く埋まっていても、構造物を見つけるための普遍的な方法が必要です。
これは常にUbuntuにあります。検索の使用を検討しましたが、検索データベースが常に最新であることを確認する必要がありました。
答え1
試してみると、find -name project/dir1/dir2
次のメッセージが表示されます。
find:警告:Unixファイル名には通常スラッシュは含まれていません(パス名には含まれています)。これは
-name 'project/dir1/dir2'
、そのシステムで常にfalseと評価できることを意味します。この-wholename
テストがより役に立つかもしれません-samefile
。または、GNU grepを使用している場合は、find ... -print0 | grep -FzZ
project / dir1 / dir2 ''を使用できます。
したがって、これらのタスクにいくつかの代替手段を提供します。奇妙なことに、-path
findコマンドは言及されていません。
find -path "*/project/dir1/dir2" -print
始めを参考にしてください*/
。これはfindで終わるすべてのパスを印刷するように指示し、/project/dir1/dir2
最初のディレクトリの名前はでなければなりませんproject
。それ以外の場合は findmyproject/dir1/dir2
などを行います。