Linux bash 提取文件名和目录名

Linux bash 提取文件名和目录名

在Linux Bash中分别使用basename、dirname、${},提取文件名和目录名。

通过变量方式 #

${}用于字符串的读取,提取和替换功能,可以使用${} 提取字符串

1、提取文件名 #

# file1=/dir1/dir2/file.txt
# echo ${file1##*/}
file.txt

2、提取后缀 #

# echo ${file1##*.}
txt

3、提取不带后缀的文件名 #

# tmp=${file1##*/}
# echo $tmp
file.txt
# echo ${tmp%.*}
file

4、提取目录 #

# echo ${var%/*}
/dir1/dir2

通过命令 #

使用文件目录的专有命令basename和dirname

1、提取文件名 #

# file2=/dir1/dir2/file2.txt
# echo $(basename $file2)
file2.txt

2、提取不带后缀的文件名 #

# echo $(basename $file2 .txt)
file2

3、提取目录 #

# dirname $file2
/dir1/dir2
# echo $(dirname $file2)
/dir1/dir2