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 手册页和常规正则表达式在线帮助中了解受支持的语法,这些语法太多,无法在此列出。