在转向文件遍历之前,让我们了解什么是通配符模式,这些模式包含诸如‘?’,’*’之类的字符串。
文件锁定是识别这些模式并执行文件路径扩展的操作。
请参阅下面的示例以了解清楚,
如果您观察到上面的图片,我创建了几个目录,其起始字符为HELLO和hello,然后尝试删除这些目录。
当我使用rm -rf hello *时,它删除了目录hello1,hello2,hello3,在’hello’识别出第一个字符为’hello’之后使用的’*’符号,然后出现零个或多个其他字符。
使用其它字符的例子:
1)星号(*)
*用于匹配任意数量的字符(零个或多个),要了解更多信息,请参阅上面的示例。
2)问号(?)
?用于精确匹配一个字符。
在上图中,您可以看到“?”可以精确匹配一个字符,并在行尾使用。
那么使用“你好?”将匹配所有以“ hello”开头字符的文件或目录,并且将识别出另外一个字符。
3)方括号[]
方括号用于匹配[]中的字符,请参见下图,
[]可以用来匹配精确的字符,或者您也可以指定一个范围,例如在上例中,使用’hello [1-5]’将显示所有以’hello’开头的文件和目录,然后下一个字符可以是从1到5的数字。
4)感叹号(!)
!用于从方括号内指定的列表中排除字符。
例如:
ls hello[!3]
It will display the directories starting with hello, ending with any character but not 3
5)命名字符类([[[:named:]])
它用于打印命名值。 它们的解释取决于LC_CTYPE语言环境。下面列出了其中一些。
- ‘[:alnum:]’:打印所有具有字母和数字的文件。小写和大写都考虑在内。
- ‘[:alpha:]’:仅打印所有带有字母的文件。小写和大写都考虑在内。
- ‘ [:digit:]’:打印所有具有数字的文件。
- ‘[:lower:]’:打印所有具有小写字母的文件。
- “[:PUNCT:]”:打印所有这些文件有字符。会搜索! ”#$%&’()* +,–。 /:; <=>? @ [\] ^ _`{| }〜。
- ‘ [:space:]’:打印所有带有空格字符的文件。
- ‘[:upper:]’:打印所有具有小写字母的文件。
注意:它们可以与星号(*),问号(?)或方括号([])一起使用以生成有用的输出。
例如:
ls [[:alpha:]]* : Will display the directories starting with a alphabet (either in lower or uppercase) and ending
with any characters.
ls *[[:alnum:]]*.* : Will display the files (of any type) containing a alphabet or a digit but may start
or end with any length of characters.
ls *[[:digit:]] : Will display the directories which may start with any length of characters but ending with a digit.
ls ?[[:lower:]] : Will display the directories starting with exactly one character and ending with a lowercase
character.
ls *[[:upper:]]* : Will display the directories containing a alphabet or digit which may start or end with any
length of characters.
注意: * 、?的任意组合可以与任何命名的类一起使用。