Linux 的文件名获取之旅(linux 获取文件名)
Linux 是一款众多开源爱好者所喜爱的操作系统,它拥有大量的特性和命令行工具,可以让管理员更加容易地管理系统,提高效率。在操作系统管理员的日常工作中,必定会遇到需要操作文件和文件目录的情况。例如,通过命令行查找特定的文件,甚至通过 echo 语句添加文件/目录的名称,这些都需要文件名称的支持。
Linux 主要提供了四种不同的方式获取文件的名称,包括:glob、globstar、extglob、brace expansion 等。
##### glob
glob 是最为常用的一种方式获取指定条件的文件名称,它可以使用 *、?和[] 等通配符进行匹配,从而获得复合条件的文件名称。
举例来说,想要获取所有以 .txt 结尾的文件名称,可以使用如下命令:
“`shell
# 获得所有以 .txt 结尾的文件名
$ ls -l *.txt
##### globstar
与 glob 类似的是 globstar,它还是使用 * 和?等通配符进行文件名称匹配,但在 globs 的基础上加了两点:
- 可使用 ** 来表示任意多个子目录- 可以使用逻辑操作符(&&、||、!)来进行更精细的匹配
例如,想要获取系统中所有以 .pdf 结尾的文件名称,可以使用如下命令:
```shell# 获得系统中所有以 .pdf 结尾的文件名
$ ls -l **/*.pdf
##### extglob
extglob 可以看做是 glob 的一种扩展,它支持使用一些更为丰富的通配符,来获取文件名称。其可用通配符有:
– !:表示不匹配通配符之前的扩展
– ?():表示可以匹配一个或多个通配符之前的扩展
– *():表示可以匹配0个或多个通配符之前的扩展
同样,如果需要获取系统中所有以 .pdf 和 .txt 结尾的文件名称,可以使用以下命令:
“`shell
# 获得系统中所有以 .pdf 或 .txt 结尾的文件名
$ ls -l *.@(pdf|txt)
##### brace expansion
brace expansion 是一种比较特殊的获取文件名称的方式,它可以通过花括号{},指定需要查找的文件名称的集合,进行查找,以列表的形式进行文件名的添加,从而避免使用复杂的bash 的判断逻辑。
例如,想要同时查找所有以 .pdf 和 .txt 结尾的文件名称,可以使用下面的命令:
```shell# 同时查找所有以 .pdf 和 .txt 结尾的文件名
$ ls -l *.{pdf,txt}
以上就是 Linux 中几种获取文件名称的方式。它们具有不同的特性,但都可以帮助系统管理员快速有效地获取所需要的文件名称,提高工作效率。