在Linux系统中获得文件所在目录名的方法
使用 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。这种方式在脚本中尤其方便,因为可以在打印的同时保存变量的值供后续使用。在实际应用中,只需按照此方法进行简单修改和调整即可应对不同的需求。