在 Linux 中使用通配符匹配文件名的 10 个实际示例
通配符(也称为元字符)是代表其他字符的符号或特殊字符。您可以将它们与任何命令(例如 ls 命令或 rm 命令)一起使用,以接受地列出或删除与给定条件匹配的文件。
另请阅读:Linux 中链接运算符的 10 个实用示例
这些通配符由 shell 解释,并将结果返回到您运行的命令。 Linux 中主要有以下三种通配符:
- 星号
(*)
– 匹配任意字符的一次或多次出现,包括无字符。 - 问号
(?)
– 表示或匹配任何字符的单个出现。 - 括号字符
([ ])
– 匹配方括号中出现的任何字符。可以使用不同类型的字符(字母数字字符):数字、字母、其他特殊字符等。
您需要仔细选择使用哪个通配符来匹配正确的文件名:也可以将所有通配符组合在一个操作中,如下面的示例中所述。
如何在 Linux 中使用通配符匹配文件名
出于本文的目的,我们将使用以下文件来演示每个示例。
createbackup.sh list.sh lspace.sh speaker.sh
listopen.sh lost.sh rename-files.sh topprocs.sh
1. 此命令匹配名称以 l
(前缀)开头并以出现一个或多个任意字符结尾的所有文件。
ls -l l*
2. 此示例展示了 *
的另一种用法,用于复制以 users-0
为前缀并以出现一个或多个任意字符结尾的所有文件名。
mkdir -p users-info
ls users-0*
mv -v users-0* users-info/ # Option -v flag enables verbose output
3. 以下命令匹配名称以 l
开头、后跟任何单个字符并以 st.sh
结尾(这是后缀)的所有文件)。
ls l?st.sh
4. 下面的命令匹配名称以 l
开头、后跟方括号中的任意字符但以 st.sh
结尾的所有文件。
ls l[abdcio]st.sh
如何在 Linux 中组合通配符来匹配文件名
您可以组合通配符来构建复杂的文件名匹配条件,如以下示例中所述。
5. 此命令将匹配以任意两个字符为前缀、后跟 st
但以一次或多次出现的任意字符结尾的所有文件名。
ls
ls ??st*
6. 此示例匹配以任何这些字符 [clst]
开头并以一次或多次出现的任意字符结尾的文件名。
ls
ls [clst]*
7. 在此示例中,仅以这些字符 [clst]
开头的文件名,后跟其中一个 [io]
,然后是任何单个字符字符,后跟 t
,最后,将列出任意字符的一次或多次出现。
ls
ls [clst][io]?t*
8. 此处,以一次或多次出现的任意字符为前缀、后跟字母 tar
并以一次或多次出现的任意字符结尾的文件名将被删除。
ls
rm *tar*
ls
如何在Linux中匹配字符集
9. 现在让我们看看如何指定一组字符。考虑下面包含系统用户信息的文件名。
ls
users-111.list users-1AA.list users-22A.list users-2aB.txt users-2ba.txt
users-111.txt users-1AA.txt users-22A.txt users-2AB.txt users-2bA.txt
users-11A.txt users-1AB.list users-2aA.txt users-2ba.list
users-12A.txt users-1AB.txt users-2AB.list users-2bA.list
此命令将匹配名称以 users-i
开头,后跟数字、小写字母或数字,然后是数字并以出现一个或多个任意字符结尾的所有文件。
ls users-[0-9][a-z0-9][0-9]*
下一个命令匹配以 users-i
开头的文件名,后跟一个数字、一个小写或大写字母或数字,然后是一个数字,并以出现一个或多个任意字符结尾。
ls users-[0-9][a-zA-Z0-9][0-9]*
下面的命令将匹配所有以 users-i
开头的文件名,后跟一个数字、一个小写或大写字母或数字,然后是一个小写或大写字母,并以一次或多次出现结尾任何字符。
ls users-[0-9][a-zA-Z0-9][a-zA-Z]*
如何在 Linux 中对一组字符取反
10. 您还可以使用 !
符号对一组字符求反。以下命令列出以 users-i
开头的所有文件名,后跟一个数字、除数字之外的任何有效文件命名字符,然后是一个小写或大写字母,并以一次或多次出现的任何字符结尾特点。
ls users-[0-9][!0-9][a-zA-Z]*
目前为止就这样了!如果您已经尝试过上述示例,那么您现在应该很好地理解通配符如何在 Linux 中匹配文件名。
您可能还想阅读以下文章,其中显示了在 Linux 中使用通配符的示例:
- 如何将 Tar 文件提取到 Linux 中的特定或不同目录
- 删除目录中除一个或少数带扩展名的文件之外的所有文件的 3 种方法
- 在 Linux 中编写有效 Bash 脚本的 10 个有用技巧
- 如何使用 awk 和正则表达式过滤文件中的文本或字符串
如果您有任何要分享的内容或要提出的问题,请使用下面的评论表。