find がサブディレクトリを再帰的に掘り下げないようにする方法はありますか?

StackOverflow https://stackoverflow.com/questions/27077

  •  09-06-2019
  •  | 
  •  

質問

私がする時:

$ find / 

システム全体を検索します。
それを防ぐにはどうすればよいですか?

(この質問は「」からのものです。答え「別の質問へ。)

役に立ちましたか?

解決

こんにちは、

-prune を使用するという Jon からの提案を拡張したかっただけです。これは、使用する検索オプションの中で最も簡単なわけではありません。たとえば、現在のディレクトリを検索するだけの場合、find コマンドは次のようになります。

find . \( -type d ! -name . -prune \) -o \( <the bit you want to look for> \)

これにより、find がこのディレクトリ内のサブディレクトリに下降することがなくなります。

基本的に、「名前が "." ではないディレクトリであるものはすべてプルーニングします。つまり、現在のディレクトリ。」

find コマンドは、現在のディレクトリで見つかった各項目に対して左から右に評価します。つまり、最初の要素の完了後です。プルーン セグメントを削除すると、2 番目の -o (OR) 式で一致した項目が続行されます。

HTH。

乾杯、ロブ

他のヒント

考慮する:

-maxdepth n
             True if the depth of the current file into the tree is less than
             or equal to n.

-mindepth n
             True if the depth of the current file into the tree is greater
             than or equal to n.

ワイルドカードを使用した方が良い場合があります。たとえば、現在のディレクトリ内のすべての ksh スクリプトを検索したい場合は、次のようにします。

$ ls *.ksh

使用 -プルーン オプション。

あなたもそうするかもしれません

echo /specific/dir/*.jpg

ワイルドカードを展開するのはシェルであるためです。タイピング

ls *.jpg

と入力するのと同じです

ls foo.jpg bar.jpg

foo.jpg と bar.jpg は、現在のディレクトリにある「.jpg」で終わるすべてのファイルです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top