Unix:从路径查找目录名称

时间:2020-01-09 10:45:51  来源:igfitidea点击:

Unix如何从完整路径提取目录名称(例如/nas01/data/backups/file.tar.gz)?
如何在Linux或者类Unix系统上从其路径获取目录名?
您可以使用dirname命令提取目录名称。

方法1:使用dirname命令获取目录名称

语法为:

dirname /path/to/file

或者

VAR=$(dirname /path/to/my/myname.txt)

或者

FOO="/path/to/my/folder/filename.avi" 
OUT="$(dirname ${FOO})" 

例子

以下示例显示输出/nas01/data/backups:

dirname /nas01/data/backups/file.tar.gz

输出示例:

/nas01/data/backups

以下行将shell程序变量SRC设置为/nas01/data/backups:

SRC="$(dirname /nas01/data/backups/file.tar.gz)"
echo "Dirpath - $SRC"

输出示例:

Dirpath - /nas01/data/backups

方法2:使用bash/ksh shell从完整路径中提取目录名称

$字符用于参数扩展和命令替换。
您可以使用它来按需操作和/或者扩展变量,而无需使用sed或者awk之类的外部命令。
要从最短的后部(尾部)花样中去除:

${VAR%/*}
VAL="${PATHNAME%/*}"

在此示例中,将FILE设置为/nas01/data/backups/demo.avi:

FILE="/nas01/data/backups/demo.avi"
echo "$FILE = $FILE"

要提取目录名称,请执行:

echo "${FILE%/*}"
# OR store to DIR #
DIR="${FILE%/*}"
echo "Dirpath - $DIR"

输出示例:

Dirpath - /nas01/data/backups