在Linux脚本编程中,通配符(wildcards)可以帮助你处理文件名或路径名中的不确定部分
*
:匹配任意长度的任意字符。例如,*.txt
可以匹配所有以.txt
结尾的文件。?
:匹配任意单个字符。例如,ab?d
可以匹配abd
或acd
。[abc]
:匹配方括号内的任意一个字符。例如,[ab]d
可以匹配ad
或bd
。[!abc]
:匹配不在方括号内的任意一个字符。例如,[!ab]d
可以匹配cd
。{m,n}
:匹配大括号内的任意一个字符串。例如,file{1,2}.txt
可以匹配file1.txt
或file2.txt
。{m,n,p}
:匹配大括号内的任意多个字符串。例如,file{1,2,3}.txt
可以匹配file1.txt
、file2.txt
或file3.txt
。
以下是一些使用通配符的Linux脚本编程示例:
示例1:列出当前目录下的所有.txt
文件
#!/bin/bash for file in *.txt; do echo "Processing $file" done
示例2:列出当前目录下的所有以a
或b
开头的文件
#!/bin/bash for file in [ab]*; do echo "Processing $file" done
示例3:列出当前目录下的所有长度为3或4的文件名
#!/bin/bash for file in ???; do echo "Processing $file" done
示例4:列出当前目录下的所有不以a
或b
开头的文件名
#!/bin/bash for file in [!ab]*; do echo "Processing $file" done
示例5:将当前目录下的所有.txt
文件重命名为backup_*.txt
#!/bin/bash for file in *.txt; do mv "$file" "backup_${file}" done
在编写脚本时,确保在使用通配符之前对它们进行适当的引用,以防止因空格或特殊字符导致的错误。