bash: 在 shell 脚本中使用正则表达式查找和 grep

bash: find and grep with regex in shellscript

我安装了某个软件的多个版本(我们称之为 MySoftware),我喜欢结合 find 找到特定版本的路径和 grep。 假设我有以下版本: 1.12.0
1.12.2
1.42.2

存储方式如下:

~/src/MySoftware/1.12.0/...
~/src/MySoftware/1.12.2/...
~/src/MySoftware/1.42.2/...

在 shell 中我可以做类似 find . -name MySoftware | grep 1.12.0 的事情。这是有效的,因为命令给了我 ~/src/MySoftware/1.12.0/ 路径。

但是,当切换到 shell 脚本时,我尝试这样做:

find . -name "MySoftware"  -exec grep "1\.12\.0" {} ';'

然而,上面的例子没有返回任何东西,我不知道为什么。 grep -HF "1.12.0" 的其他尝试也无效。我很感激任何建议

请注意区别!

在第一个示例中,find . -name MySoftware | grep 1.12.0您正在构建一个包含文件名的列表,然后您 grep 特定版本。

但是,在第二个示例中,您试图找到相同的文件并且您正试图在这些文件中进行 grep!!!

所以,有了这个:

find . -name "MySoftware"  -exec grep "1\.12\.0" {} ';'

您正在搜索那些文件!!!

我建议你这样做:

find . -type f -name "MySoftware" | grep 1.12.0