文件名置换 点击此处打开《LInux与Unix Shell编程指南》本章pdf文档
特殊字符:
* 匹配文件名中的任何字符串,包括空字符串。
? 匹配文件名中的任何单个字符。
[..] 匹配[]中所包含的任何字符
[!..] 匹配[]中非感叹号!之后的字符。
注意:要跟正则表达式去分开,上面这四个字符是针对文件名的含义,而正则表达式是针对文件里面的内容,常跟grep
等命令搭配使用。
使用*
使用星号*可以匹配文件名中的任何字符串。例如:
[root@localhost test]# ls a*
append.sed atlist at_test2 at_test.sh
表示以a开头,后面可以跟随任何字符串,包括空字符串。
[root@localhost test]# ls s*e
sample_one sample_three
表示以s开头,e结尾,中间为任意字符串或空字符串的文件名。
使用?
例如:
[root@localhost test]# ls ??di*
ifdirec2 vedio.txt
表示前面为任意字符而后面两个字符为d,i,在后面为任意字符串的文件名。
使用[..]、[!..]
例如:
[root@localhost test]# ls [sv]*
sample_one sample_three sedlist vartest
sample_one~ sample_two sedlist~ vedio.txt
表示头字符为s或者v,其余为任意字符串的文件名。
[root@localhost test]# ls *[0-9]
at_test2 ifdirec2
表示最后一个字符为数字的文件名。
[root@localhost test]# ls *[!0-9]
append.sed e are no longer using two ifparam oops.txt sample_one~
表示最后一个字符不是数字的文件名。