当前位置: 首页 > 知识库问答 >
问题:

如何递归地grep多个可能的扩展

闻人博
2023-03-14

这个问题不同于其他grep模式匹配问题,因为我们正在寻找大量的文件扩展名,因此这个问题中的以下内容太长太乏味,无法键入:grep-r-i--包括'*. ade'-包括'*。adp'...CP_Image~/path[12345]

当谷歌出于安全原因阻止我的附件上传时,我正试图通过电子邮件发送一个静态网站的备份。他们的支持页面上写着:

无法发送或接收以下文件类型:

.艾德。adp。球棒chm。cmd。com。cpl。exe。hta。ins。isp。罐子jse。库。lnk。mde。理学硕士。msp。mst。pif。scr。sct。shb。系统。vb。vbe。vbs。vxd。wsc。wsf。wsh

我在这里转换并测试了以下正则表达式:

/.*\.(ade|adp|bat|chm|cmd|com|cpl|exe|hta|ins|isp|jar|jse|lib|lnk|mde|msc|msp|mst|pif|scr|sct|shb|sys|vb|vbe|vbs|vxd|wsc|wsf|wsh)/gi

并尝试运行它:

ls -lahR | grep '.*\.(ade|adp|bat|chm|cmd|com|cpl|exe|hta|ins|isp|jar|jse|lib|lnk|mde|msc|msp|mst|pif|scr|sct|shb|sys|vb|vbe|vbs|vxd|wsc|wsf|wsh)'

它不起作用。我认为grep不能正确解释and()符号,因为ls-lahR | grep.*\。html“有效

共有3个答案

双恩
2023-03-14

我正在递归地尝试查找具有指定扩展名的文件。

最好使用查找-iregex选项:

find . -regextype posix-egrep -iregex '.*\.(ade|adp|bat|chm|cmd|com|cpl|exe|hta|ins|isp|jar|jse|lib|lnk|mde|msc|msp|mst|pif|scr|sct|shb|sys|vb|vbe|vbs|vxd|wsc|wsf|wsh)'

关于OSX的使用:

find -E . posix-egrep -iregex '.*\.(ade|adp|bat|chm|cmd|com|cpl|exe|hta|ins|isp|jar|jse|lib|lnk|mde|msc|msp|mst|pif|scr|sct|shb|sys|vb|vbe|vbs|vxd|wsc|wsf|wsh)'

乜坚成
2023-03-14

添加标志-E来表示它是一个扩展的正则表达式。从GNU Grep 2.1:默认是"基本正则表达式",和

[i] n基本正则表达式元字符“?”,“,”{'、'|'、'('和')'失去了它们的特殊意义。

桓瀚
2023-03-14

普通grep使用基本正则表达式(BRE)。在BRE中,捕获组由\(…\)表示,交替op由\

grep '.*\.\(ade\|adp\|bat\|chm\|cmd\|com\|cpl\|exe\|hta\|ins\|isp\|jar\|jse\|lib\|lnk\|mde\|msc\|msp\|mst\|pif\|scr\|sct\|shb\|sys\|vb\|vbe\|vbs\|vxd\|wsc\|wsf\|wsh\)'

或者

grep -E '.*\.(ade|adp|bat|chm|cmd|com|cpl|exe|hta|ins|isp|jar|jse|lib|lnk|mde|msc|msp|ms‌​t|pif|scr|sct|shb|sys|vb|vbe|vbs|vxd|wsc|wsf|wsh)'

通过启用-E参数,使用--extended regex

参考

 类似资料:
  • 问题内容: 如何递归所有目录和子目录? 问题答案: 第一个参数表示要搜索的正则表达式,而第二个参数表示应搜索的目录。在这种情况下,表示当前目录。 注意:这适用于GNU grep,在某些平台(如Solaris)上,必须专门使用GNU grep而不是传统实现。对于Solaris,这是命令。

  • 假设我有n个list<T>的集合 比如 List<shool>、List<Det>、List<Student>..... for循环做法 foreacher(var item in List<shool>) { } 最终输出为字典 存储的是第一个为 拿这三个举例 shool_0 det_0 student_0 第二个为 shool 0 det 0 student 1 目前我的想法是递归 但是这边递

  • 问题内容: 我想扩展一些递归的属性(又名深度复制)。就像jQuery一样。我不只包括jquery一件事的b / c。 您知道有什么优雅的方法可以使用简单的javascript或angularjs吗? 更新, 请看看并尝试完成相同的结果 http://plnkr.co/edit/GHabYbyhsqtfBPtplksO?p=preview 我确实调查了.copy()但“属性(对象)已删除” 问题答案

  • 我目前正在尝试制作一个脚本,该脚本将grep输入以查看某些内容是否属于某种文件类型(例如zip),尽管文件类型之前的文本可以是任何内容,因此例如 都属于这一类。我正在尝试使用通配符grep这些,到目前为止,我已经尝试过了。 但是每当我这样做时,它都会发现文件很好,但是如果.zip之后有其他字符,它仍然会显示输出例如或仍然会被grep拾取。话虽如此,我应该怎么做才能防止 grep 在后显示具有其他字

  • 设整数为数字组合的长度,并设有从1到的连续整数范围。序列必须是不递减的(序列一般是递增的,但可能有相同的连续数字)。给定和有多少这样的序列是可能的? 例如,对于x=3,=2,有4个可能的序列: 1,1,1 1,1,2 1,2,2 2,2,2 我想到了以下递归方法: > howManySorted(n,max,len 1,i)是指序列长度增加1,而下一个数字与前一个数字相同1的情况。 我确实意识到我