![如何在当前目录中 grep 字符串模式](https://linux22.com/image/924560/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%AD%20grep%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A8%A1%E5%BC%8F.png)
我想识别在命令行上作为参数提供的字符串。我只需要在当前目录和档案中搜索。我的命令是:
if grep -s "$1" * .*
then echo "found" else echo "not found"
但是例如,如果我有一个文件夹包含单词“father”,另一个文件夹包含单词“fathersa”,并且字符串输入是“father”,我的代码会输出两个文件夹。但是如果我的输入是“father”(father 和空格),则输出应该只有第一个文件夹,但我的代码会显示两个文件夹。我应该怎么做?此外,此命令是否足以从我当前的目录中搜索所有文件夹和档案?编辑:我正在使用 Ubuntu 桌面(Ubuntu 12.04.4 LTS)
我也尝试过,grep -w
但我的字符串不完全是固定字符串,它实际上是一种模式,所以它不是我真正想要的。如果我的输入是“fa”,我的代码应该输出所有包含“fa”结构的文件夹,如“father”,“fat”等等,但如果我的输入是带有空格的“fa”,我的输出应该只是带有“fa”的文件夹,仅此而已
答案1
使用grep -w
-w,——单词-正则表达式
仅选择包含形成完整单词的匹配项的行。
您可能还想使用-q
。如果您有一个固定字符串而不是模式,请添加-F
以使grep
执行速度更快!
您的命令不会递归搜索。