2017-09-27 3 views
0

私はCentOS 6.8を使用していますが、変数(これをfPathと呼ぶ)をファイルのファイルパスに設定しようとしています(フォルダFooを呼び出しましょう)。要点は、ユーザーがフォルダFooをどこにインストールしたのかわからないことです。正確なテキストのみを含むフォルダを見つける方法

問題は、私のfindコマンドがFooという文字列を含むすべてのフォルダを返すということです(Fooフォルダ内にFoo_logs、Foo_apps、FooMoreなどがあります)。 findコマンドでFooフォルダのパスのみを検索/返すようにしたい。

私が探して試してみましたし、私が作った最も近いの試みは、コマンドを使用している:

find -regex ./Foo 

私はFooのフォルダを含むディレクトリ内ですでにだ場合は、これが唯一のFooフォルダのパスを返します。私はどのディレクトリにいても、Fooフォルダのパスだけを返すfindコマンドを適用したい。私が試みられてきた

その他のコマンドは次のとおりです。

locate Foo 

find -type d -name Foo 

find ./Foo 

locate /Foo 

locate ./Foo 

find Foo | -wholename '*/Foo/*' 

find ./Foo | -wholename '*/Foo/*' 

find .*/Foo | -wholename '*/Foo/*' 

編集:あなたが推測したよう

答えて

1

をフォーマット、findは完全に仕事をする:

find/-type d -name Foo

  • /されますそこから検索を開始します。
  • -type d手段ディレクトリのみ
  • -name Fooは正確にFooという名前のファイルを意味します。

-wholenameここでは、(サブ)ディレクトリの1つではなく、パス全体が一致することが期待されるため、ここでは使用しないでください。

+0

ありがとうございますが、これでもFoo(Foo_logsなど)という文字列を含むすべてのディレクトリが返されます。私はファイルFooのための単一のリターンを得ようとしています、ファイル名はFooと等しく、何もありません( '_'や 'log'などはありません)。 – Matt1713

+1

Fooという名前の複数のディレクトリがある場合、それらを出力に取得します。より多くの条件を指定しない限り、あなたが探しているものをシェルが "推測"する方法はありません。 Foo_logに関しては、それが "Foo"ディレクトリ(あなたが最初に探しているようだ)の下になければ、結果に表示されません。 – yoones

+0

ああ;そうですか。わかりやすくするために、(唯一の)Fooという名前のディレクトリ/フォルダが1つ必要です。 findコマンドで、文字列 "Foo"を含むディレクトリ内の他のものを無視する方法があります。私が前に言ったように、私はFooの中にあるFoo_logsディレクトリを望んでいません。私はちょうど出力にFooファイルパスが必要です。それは可能ですか? はFoo /\ Foo_logs FooMore 私はFooの親のファイルパスで返すように見つける欲しい: だから基本的に私はこのようなものを持っています。他の人はファイル名に "Foo"以上のものを持っています。 – Matt1713

関連する問題