13

私はディレクトリ「ホーム」にいて、このコマンドを実行します

find . -iname *.mov

そしてそれは生み出す

./root/movies/Corey/holtorf/Intro.mov

今、「cd ..」して同じコマンドを実行します

find . -iname *.mov

今回は「Intro.mov」が結果にありません。この背後にある理由は何ですか?また、現在のディレクトリで「.mov」で終わるすべてのファイルを再帰的に検索するコマンドは何ですか? ありがとう。

4

4 に答える 4

23

引数にワイルドカードを使用すると、シェルによって展開されます。これを防ぐには、「*.mov」と書く必要があります。

あなたの場合、シェルは find に引数を渡す前に、見つかったファイルに展開します。次に、ファイルのリストを取得し、元のパターンに基づいて検索しません。

于 2013-04-10T16:26:35.057 に答える
21

-followホーム ディレクトリが実際にシンボリック リンクである場合は、追加する必要がある場合があります。また、パターンを引用しないと、シェルは に渡す前にそれを展開しようとしfindます。

find . -iname "*.mov" -follow
于 2013-04-10T16:26:34.170 に答える
4

まだコメントできないので、これを回答として投稿します(事前にお詫び申し上げます)。

この投稿「検索: パスは式の前にある必要があります:」を確認してください。現在のディレクトリ内のファイルも検索する再帰検索を指定するにはどうすればよいですか?

役立つ追加情報: 現在のディレクトリで特定の名前のファイルを再帰的に検索するには、grep または find を使用できます。

grep -r "*.mov" .

または大文字と小文字を区別しない検索の場合

grep -ri "*.mov" .

そして見つけるために

find . -type f -exec grep -l "*.mov" {} +

また、便利なリンクhttp://www.cyberciti.biz/faq/howto-recurively-search-all-files-for-words/

于 2013-04-10T16:35:11.613 に答える
1

私は使うだろう:

 grep -rn 'mov' .

再帰数値検索

于 2013-04-10T16:37:31.013 に答える