首先,我不是shell脚本的星星,更习惯于用Python编程,但必须使用现有的Python脚本,它通过子进程调用Unix命令。
在此脚本中,我们使用2个find命令来检查是否可以在xml文件/文件名中找到2个特定字符串:
FIND_IN_FILE_CMD: find <directory> -name *.xml -exec grep -Hnl STRING1|STRING2 {} +
FIND_IN_FILENAME_CMD: find <directory> ( -name *STRING1*xml -o -name *STRING2*xml )
我们看到的问题是STRING 1和STRING 2并不总是大写的,现在我可以做一些类似STRING1|STRING2|String1|String2|string1|string2
和( -name *STRING1*xml -o -name *STRING2*xml -o -name *String1*xml -o -name *String2*xml -o -name *string1*xml -o -name *string2*xml )
的事情,但是我想知道是否有更有效的方法可以一次性完成这个检查,基本上可以匹配所有不同的写作风格。
有人能帮我吗?
2条答案
按热度按时间fdbelqdn1#
可以将
-i
选项与grep
命令一起使用,以执行不区分大小写的搜索:这样,
grep
命令将在*.xml
文件中以不区分大小写的方式搜索STRING1
或STRING2
。在第二个命令中,您可以使用
-o
选项在多个文件名模式之间执行“or”操作,这样您就不需要多次重复整个命令。在这里,我使用了带有不同大小写字符的方括号来匹配文件名中STRING1和STRING2的任何变体。3yhwsihp2#
如果您打算继续使用
find
,只需将-name
替换为不区分大小写的版本-iname
。