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
我安装了某个软件的多个版本(我们称之为 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