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 中几种获取文件名称的方式。它们具有不同的特性,但都可以帮助系统管理员快速有效地获取所需要的文件名称,提高工作效率。


数据运维技术 » Linux 的文件名获取之旅(linux 获取文件名)