在 bash 中我可以使用 grep 来使用哪些 glob?

在 bash 中我可以使用 grep 来使用哪些 glob?

Linux 和类 Unix shellbash允许使用通配符来近似文件名,使文件搜索更容易。我知道通配符通配符 (*)。bash我还可以使用哪些其他通配符grep

答案1

bash 内置参数扩展 glob 与 grep 可以理解为搜索输入的内容之间存在差异。

典型的 glob 用法是*, 来扩展为与字符串其余部分匹配的任何字符串。例如:

ls
# 1.txt 2.txt 3.txt
grep "search string" *.txt
# expands the star to match anything ending in .txt, so in this case is the same as:
grep "search string" 1.txt 2.txt 3.txt

这都是 bash,也可以用于echo例如(但由于它是 bash,因此在引号内不起作用)。对于您的实际问题,这是 glob 手册页(或者man glob.7从 shell 中)还描述了几个可以用作 glob 的其他匹配器。总结一下(ls为了简单起见使用):

ls ?.txt # matches any single character
ls [0-9].txt # matches a single character from 0 to 9
ls [[:digit:]].txt # same as above
ls [0-9A-Za-z].txt # matches any alphanumeric character

请参阅上面的 glob 手册页以获取完整列表以及一些值得注意的特殊情况,例如匹配 a .

对于 grep 搜索字符串,您可以使用几种形式的(半)标准正则表达式字符串,例如-e-E-P在 grep 手册页和常规正则表达式在线帮助中了解受支持的语法,这些语法太多,无法在此列出。

相关内容