使用表达式时,bash查找打印文件两次

时间:2011-06-22 03:50:45

标签: bash

为什么文件打印两次?

find . *.{h,cc} -maxdepth 1 -type f
./file7.h
./file8.h
./file9.cc
file7.h
file8.h
file9.cc

这是对的吗?如何指定文件模式?

5 个答案:

答案 0 :(得分:4)

它有两次,因为它首先在.下找到它,然后在给find作为搜索地点的实际文件名下找到它。也许你打算在逃避通配符时使用-name

答案 1 :(得分:2)

find . -maxdepth 1 \( -name \*.h -o -name \*.cc \) -type f

答案 2 :(得分:1)

如果您只是在当前目录中查找文件,为什么不简单地使用:

 $ shopt -s expglob
 $ ls *.*(h|cc) */*.*(h|cc)

否则,你必须做点什么:

 $ find . -maxdepth 1 -type f \( -name "*.h" -o -name "*.cc" \)

使用括号将执行或首先,然后将其与-type f和-maxdepth组合。

答案 3 :(得分:0)

find . -name *.h -o -name *.cc -maxdepth 1 -type f

答案 4 :(得分:0)

find *.{h,cpp} -maxdepth 1 -type f
这可能有所帮助。