在Linux系统中获得文件所在目录名的方法

网络知识 2025-05-08 12:38www.1681989.comseo网站推广

使用 Bash shell 提取目录名的两种方法

在 Unix 和 Linux 系统操作中,我们常常需要处理文件路径并从中提取目录名。下面介绍两种常用的方法,帮助你通过 Bash shell 脚本从文件路径中提取目录名。

方法一:使用 dirname 命令

`dirname` 是一个常用的命令行工具,用于从文件路径中提取目录名。其语法如下:

假设我们正在处理一个名为 `dabu.txt` 的文件,其路径为 `/root/aaa/bbb/dabu.txt`。要获取其目录名,可以使用以下命令:

```bash

[ ~] dirname /root/aaa/bbb/dabu.txt

```

输出结果为:

```bash

/root/aaa/bbb

```

如果你想将目录名赋值给一个变量,可以使用以下命令:

```bash

[ ~] SRC="$(dirname /root/aaa/bbb/dabu.txt)"

[ ~] echo "Dirpath - $SRC"

```

输出结果为:

```bash

Dirpath - /root/aaa/bbb

```

方法二:使用 Bash shell 参数扩展和变量替换

在 Bash shell 中,我们可以使用 `$` 字符进行变量扩展和替换,无需使用外部命令如 `sed` 或 `awk`。假设我们将文件 `dabu.txt` 的绝对路径 `/root/aaa/bbb/dabu.txt` 赋值给变量 `FILE`,可以使用以下命令提取目录名:

```bash

[ ~] FILE="/root/aaa/bbb/dabu.txt"

[ ~] echo ${FILE%/} 删除最后的斜杠和文件名部分,留下目录名。

```

输出结果为:`/root/aaa/bbb`。你也可以将结果赋值给另一个变量,例如:

```bash

[ ~] VAL="${FILE%/}" 将结果赋值给变量VAL。

[ ~] echo "Dirpath -- $VAL" 输出目录名。

``` 输出的结果为:Dirpath -- /root/aaa/bbb。这种方式在脚本中尤其方便,因为可以在打印的同时保存变量的值供后续使用。在实际应用中,只需按照此方法进行简单修改和调整即可应对不同的需求。

Copyright © 2016-2025 www.1681989.com 推火网 版权所有 Power by