📜  Linux中的文件通配

📅  最后修改于: 2021-05-24 16:59:52             🧑  作者: Mango

在转向文件遍历之前,让我们了解什么是通配符模式,这些模式包含诸如‘?’,’*’之字符串

文件锁定是识别这些模式并执行文件路径扩展的操作。

请参阅下面的示例以了解清楚,

*的路径扩展

如果您观察到上面的图片,我创建了几个目录,其起始字符为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.

注意: * 、?的任意组合可以与任何命名的类一起使用。