某些子目录的查找命令

scr*_*rrr 20 linux shell bash find

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

我想在里面搜索一个文件,比如说有一个*.c结尾,但我只想在子目录“dir/dir2”及其所有子目录中搜索。我该如何制定?

假设我在dir/我有:

find . -name "*.c"

在所有目录中搜索。

我如何限制为仅dir2

Jos*_*osh 27

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

find . -path "dir2/*.c"
Run Code Online (Sandbox Code Playgroud)

dir2即使dir2不是直接子目录 EG,这也可以让您找到文件:

# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c
Run Code Online (Sandbox Code Playgroud)


小智 14

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

find ./dir2 -name '*.c'
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩

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

find /home/user/dir/dir2 -name '*.c'
Run Code Online (Sandbox Code Playgroud)


Sha*_*off 6

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

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

如果你想查看 dir1 和 dir3 而不是 dir2,你可以这样做 find {dir1,dir3} -name '*.c'

  • 在最后一个命令中,不需要大括号。`find dir1 dir3 -name \*.c` 工作得很好。 (4认同)