说我想查找名为/Path
的{{1}}中的所有文件。易:
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
,则需要30-60秒。这就是bar
的管道不可接受的原因。
答案 0 :(得分:7)
您在-name
参数中使用通配符,但您也可以在路径参数中使用它。
find /Path/bar* -name "file_name*"
我创建了以下测试目录:
./Path
|-- bar
`-- file_name123.txt
|-- bar1
`-- file_name234.txt
|-- bar2
`-- file_name345.txt
|-- foo
`-- file_name456.txt
以上命令给出:
Path/bar/file_name123.txt
Path/bar1/file_name234.txt
Path/bar2/file_name345.txt
答案 1 :(得分:2)
您可以使用-path
标志,如
find /Path -path "/Path/bar*" -name "file_name*"
这使您可以在没有像
这样的简单通配符的情况下执行多个路径find /PATH \( -path "/Path/bar*" -o -path "/Path/foo* \) -name "file_name*"