FreeBSD使用find指定要搜索的部分目录名

时间:2016-06-23 10:24:53

标签: linux unix find freebsd

我有以下目录:

/usr/smac/results/june/

在这个目录中我有很多目录。我只对那些以' ceg'开头的人感兴趣。 e.g。

ceg20160611234
gfd20160611493
ceg20160611543
ceg20160612193
flc20160612873

其中每一项都有以下内容:

RUN1 /日志文件 RUN2 /日志文件 RUN3 /日志文件 等

我知道如何使用'发现'命令在每个日志文件中搜索一个字符串,即

find . -maxdepth 2 -type f -name logfile -exec egrep -l 'passed' {} \;

然而,这将搜索所有文件,即

ceg20160611234/run1/logfile
ceg20160611234/run2/logfile
ceg20160611234/run3/logfile
[...]
gfd20160611493/run1/logfile
gfd20160611493/run2/logfile
[...]
ceg20160611543/run1/logfile
ceg20160611543/run2/logfile
[...]
ceg20160612193/run1/logfile
ceg20160612193/run2/logfile
[...]
flc20160612873/run1/logfile
flc20160612873/run2/logfile
[...]

我想尽量减少搜索,只搜索以' ceg'开头的目录。 e.g。

ceg20160611234/run1/logfile
ceg20160611234/run2/logfile
ceg20160611234/run3/logfile
[...]
ceg20160611543/run1/logfile
ceg20160611543/run2/logfile
[...]
ceg20160612193/run1/logfile
ceg20160612193/run2/logfile
[...]

3 个答案:

答案 0 :(得分:1)

您可以将find命令用作

find ceg* -maxdepth 2 -type f -name "logfile" -exec egrep -l 'passed' {} \;

将对以ceg*开头的目录名执行上述操作,并对这些目录中名为egrep的文件执行logfile

答案 1 :(得分:0)

find ./ceg* -maxdepth 2 -type f -name logfile -exec egrep -l'pass'{} \;

答案 2 :(得分:0)

这样做:

查找/ usr / smac / results / june / -name' ceg *'

基本上,-name的参数支持shell特殊字符,例如" *"和"?&#34 ;;但是,请确保引用它(''),这样它们就会被传递给find命令,而不是被shell扩展。