返回

花式通配符,命令行里的实用魔术

后端

熟悉命令行的朋友们都知道通配符。这个看似平平无奇的小功能,却能显著提升我们的效率,让我们在操作文件和目录时更加得心应手。今天,我们就来探究一下命令行通配符的妙用,领略它令人惊叹的魔力。

字符通配符

  • ?:匹配任意单个字符。例如,ls t?st.txt 将列出所有文件名中包含 "test" 的文件。
  • *:匹配任意数量的字符(包括 0 个)。例如,rm -rf ./* 将删除当前目录下的所有文件和目录。

范围通配符

  • []:匹配方括号内的任意单个字符。例如,find . -name [abc].txt 将查找当前目录中扩展名以 "a"、"b" 或 "c" 开头的所有文件。
  • [!]:匹配方括号内外的任意单个字符。例如,find . -name [!a].txt 将查找当前目录中扩展名不以 "a" 开头的所有文件。

区间通配符

  • {n}:匹配出现 n 次的字符。例如,grep hello {2,} log.txt 将查找日志文件中连续出现两次或两次以上单词 "hello" 的行。
  • {n,}:匹配出现至少 n 次的字符。例如,grep error {3,} log.txt 将查找日志文件中连续出现三次或三次以上单词 "error" 的行。
  • {n1,n2}:匹配出现 n1n2 次的字符。例如,grep warning {1,3} log.txt 将查找日志文件中连续出现一次、两次或三次单词 "warning" 的行。

锚定通配符

  • ^:匹配行首。例如,grep ^error log.txt 将查找日志文件中以 "error" 开头的行。
  • $:匹配行尾。例如,grep .txt$ log.txt 将查找日志文件中以 ".txt" 结尾的行。

高级用法

  • 花式匹配: 通配符可以组合使用,创建复杂匹配规则。例如,grep ^error:.+$\s+.txt$ log.txt 将查找日志文件中以 "error" 开头,后面跟着任意数量字符,并以 ".txt" 结尾的行。
  • 忽略大小写: 使用 -i 选项可以忽略大小写。例如,grep -i hello log.txt 将查找日志文件中以大写或小写 "hello" 开头的行。
  • 排除匹配: 使用 -v 选项可以排除匹配。例如,grep -v error log.txt 将查找日志文件中不包含单词 "error" 的行。

示例

  • 列出所有以 "log" 开头的文件: ls log*
  • 删除所有带有数字扩展名的文件: rm -rf *.[0-9]*
  • 查找包含 "warning" 至少三次的文件: grep warning {3,} log.txt
  • 查找以 "error" 开头,以 ".log" 结尾的文件: grep ^error:.+$\s+.log$ log.txt
  • 排除包含 "success" 的行: grep -v success log.txt

**