【发布时间】:2016-01-19 09:49:46
【问题描述】:
假设我想查找/Path 中名为file_name* 的所有文件。简单:
$ find /Path -name "file_name*"
/Path/foo1/file_name1.txt
/Path/foo2/file_name2.txt
/Path/bar3/file_name3.txt
/Path/bar4/file_name4.txt
如果我只想搜索bar 之类的子目录怎么办?
我可以通过管道传输结果,但这非常低效。
$ find /Path -name "file_name*" | grep "bar"
/Path/bar3/file_name3.txt
/Path/bar4/file_name4.txt
有没有办法将它们全部放在find 中并跳过搜索与bar 不匹配的目录?
注意:如果我专门搜索 /Path/bar3,结果会立即返回。但是,如果我只搜索/Path,然后在grep 中搜索bar,则需要30-60 秒。这就是为什么管道到grep 是不可接受的。
【问题讨论】:
标签: linux command-line grep locate