web-dev-qa-db-ja.com

特定のサブディレクトリのfind-command

たとえば、3つのサブディレクトリdir1 .. dir3があるディレクトリdirがあるとします。内部には多くのファイルやその他のサブディレクトリがあります。

たとえば*.cで終わるファイルを検索したいのですが、サブディレクトリ「dir/dir2」とそのすべてのサブディレクトリのみを検索したいと思います。どうすればそれを定式化できますか?

私がdir/にいると仮定すると、

find . -name "*.c"

すべてのディレクトリを検索します。

dir2のみに制限するにはどうすればよいですか?

18
scrrr

Findは有効なパスを受け入れます。

find ./dir2 -name '*.c'

トリックを行う必要があります

dirディレクトリが/home/user/dirフルパスを見つけることができます

find /home/user/dir/dir2 -name '*.c'
12
user591

-pathの代わりにfind-nameパラメータを使用することもできます。

find . -path "dir2/*.c"

これにより、dir2が直接のサブディレクトリE.Gでなくても、dir2でファイルを見つけることができます。

# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c
20
Josh

できるよ find dir2 -name '*.c'

(cd dir2; find -name '*.c')

Dir2ではなくdir1とdir3を見たい場合は、find {dir1,dir3} -name '*.c'

5
Shawn J. Goff

あなたがdirにいると仮定します

find dir2 -name '*.c'

もちろん Iain'sanswer も正しい

4
xenoterracide