某些子目录的find-command


17

比方说,我有一个目录dir有三个子目录dir1.. dir3。在内部,我有许多文件和其他子目录。

我想搜索一个带有*.c结尾的文件,但我只想搜索子目录“ dir / dir2”及其所有子目录。我该如何制定呢?

假设我在dir/

find . -name "*.c"

搜索所有目录。

如何限制为dir2

Answers:


11

查找将接受任何有效路径,因此

find ./dir2 -name '*.c'

应该可以

如果dir目录是/home/user/dir您可以找到完整路径

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

17

您也可以使用-path参数find代替-name

find . -path "dir2/*.c"

这样,dir2即使dir2不是直接子目录EG,也可以在其中查找文件:

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

4

你可以做 find dir2 -name '*.c'

你也可以 (cd dir2; find -name '*.c')

如果要查看dir1和dir3而不是dir2,则可以执行 find {dir1,dir3} -name '*.c'


3
在最后一个命令中,不需要大括号。 find dir1 dir3 -name \*.c效果很好。
KeithB 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.