0
点赞
收藏
分享

微信扫一扫

【无标题】linux 获取文件名的后缀,Linux shell 之 提取文件名和目录名的一些方法

悄然丝语 2022-03-30 阅读 109
linux

使用${}

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

1、提取文件名

# var=/dir1/dir2/file.txt

# echo ${var##*/}

file.txt

2、提取后缀

# var=/dir1/dir2/file.txt

# echo ${var##*.}

txt

3、提取不带后缀的文件名,分两步

# var=/dir1/dir2/file.txt

# tmp=${var##*/}

# echo $tmp

file.txt

# echo ${tmp%.*}

file

5、提取目录

# var=/dir1/dir2/file.txt

# echo ${var%/*}

/dir1/dir2

6、

# var=/dir1/dir2/file.txt

# echo ${var%%.*}

/dir1/dir2/file

7、

# var=/dir1/dir2/file.tar.gz

# echo ${var#*.}

tar.gz

8、${}总结

${}的使用是变量的提取和替换等操作;

#:表示从左边算起第一个

%:表示从右边算起第一个

##:表示从左边算起最后一个

%%:表示从右边算起最后一个

换句话来说,#总是表示左边算起,%总是表示右边算起。

:表示要删除的内容,对于#和##的情况,它位于指定字符(例子中的’/‘和’.’)的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定字符(例子中的’/‘和’.’)的右边,表示删除指定字符及其右边的内容。这里的’'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。

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

1、提取文件名,注意:basename是一个命令,使用 ( ) , 而 不 是 (), 而不是 (),{}

# var=/dir1/dir2/file.txt

# echo $(basename $var)

file.txt

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

# var=/dir1/dir2/file.txt

# echo $(basename $var .txt)

file

3、提取目录

# var=/dir1/dir2/file.txt

# dirname $var

/dir1/dir2

# echo $(dirname $var)

/dir1/dir2

# dir=/dir1/dir2/

# dirname $dir

/dir1

举报

相关推荐

0 条评论