为什么不“查找”此文件?


21

find与配合使用grep,可以找到与模式匹配的文件:

# find | grep error
./solr-modifiedSolr4/SolrPhpClient/phpdocs/errors.html
./error_log
./includes/classes/error_log

但是,find找不到单独使用第一个文件:

# find . -name error*
./error_log
./includes/classes/error_log

不使用时为什么find找不到errors.html文件grep?如何find用于显示此文件?

Answers:


42

您需要引用您的参数,error*因为外壳会对其进行扩展。因此,您现在真正正在运行的是find -name error_log,因为这是Shell可以将其扩展到的内容(error_log当前目录中有一个名为的文件)。

find . -name 'error*'

是针对您的用例的正确调用。


12
一种替代性写作是find -name error\*-少按一个键;)这具有相同的效果,该*获取作为识字星号传递给find命令,并且不会被您的外壳扩展
zhenech 2012年

3
如果遇到外壳问题(外壳如何解释您的命令行并将所有参数和参数传递给实际命令),请重新运行该命令,并在echo命令之前添加该命令。因此,如果您运行echo find . -name error*它,它将会输出find . -name error_log
CarlosCampderrós12年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.