Search ';查找';或';grep';与目录和子目录中的模式匹配的文件名
我需要使用“grep”或“find”命令递归搜索我的文件系统,以匹配包含字符串“report”的任何文件名 我尝试了这个命令Search ';查找';或';grep';与目录和子目录中的模式匹配的文件名,search,recursion,grep,filesystems,find,Search,Recursion,Grep,Filesystems,Find,我需要使用“grep”或“find”命令递归搜索我的文件系统,以匹配包含字符串“report”的任何文件名 我尝试了这个命令 find | grep "report[[:alnum:]]\." 虽然这接近我想要的输出,但它只提供以“report.(php/tpl/whatever)”结尾的文件 此命令有什么问题,或者我可以使用什么来生成所需的输出?您可以使用以下find命令: find . -name "*report*" *匹配任何内容(即使是空字符串)。因此,此表达式匹配所有类似于XXX
find | grep "report[[:alnum:]]\."
虽然这接近我想要的输出,但它只提供以“report.(php/tpl/whatever)”结尾的文件
此命令有什么问题,或者我可以使用什么来生成所需的输出?您可以使用以下
find
命令:
find . -name "*report*"
*
匹配任何内容(即使是空字符串)。因此,此表达式匹配所有类似于XXXXreportYYYY
的名称
引号的使用是为了避免bash扩展(试试
echo*
,看看会发生什么!-可能会有帮助。查找-姓名“*报告*”
?完美伴侣,谢谢。正是我想要的。在“*report*”中使用引号和星号的语法背后有任何原因吗?*
匹配任何内容(即使是空字符串)。因此,此表达式匹配所有类似于XXXXreportYYYY
的名称。使用引号是为了避免bash扩展。太好了,再次感谢。将此作为答案添加,以便我选择正确的答案。@taylordustin这可能有偏差,但仍有字符以双引号展开,即$
,代码>,等等。。。因此,如果您不确定扩展规则,我建议在希望bash将某些内容视为文本字符串时使用单引号(在本例中,您希望find
处理特殊字符,而bash
将其视为字符串)。