bash shell中如何获取文件名和扩展名
时间:2019-11-20 08:53:00 来源:igfitidea点击:
在linux bash shell脚本中如何提取文件的文件名和扩展名?
Bash获取文件名或目录名的基本名
要在Bash中提取文件名和扩展名,请使用以下任一方法:
basename /path/to/file.tar.gz .gz
删除文件名中的目录和扩展名,结果为file.tar${VAR%pattern}
删除文件的扩展名${VAR#pattern}
删除最短前缀
让我们在bash中查看一些示例以获取文件名的基本名称。
在bash shell脚本中获取文件的名称和扩展名
[ritter@theitroad ~]$ FILE="/home/Hyman/nginx.tar.gz" [ritter@theitroad ~]$ basename "$FILE" nginx.tar.gz [ritter@theitroad ~]$ f="$(basename -- $FILE)" [ritter@theitroad ~]$ echo "$f" nginx.tar.gz
使用模式获取文件名
[ritter@theitroad ~]$ FILE="/home/Hyman/nginx.tar.gz" [ritter@theitroad ~]$ echo ${FILE##*/} nginx.tar.gz [ritter@theitroad ~]$ [ritter@theitroad ~]$ url="https://www.theitroad.org/files/nginx.tar.gz" [ritter@theitroad ~]$ echo "${url##*/}" nginx.tar.gz
使用bash参数获取运行的脚本名称
$0的值是当前正在运行的脚本的完整路径。
我们可以从中提取文件名。
test.sh
#!/bin/bash _self="${0##*/}" echo "/tmp/test.sh 10 200" echo "$_self is called"
运行
/tmp/test.sh test.sh is called
输出示例:
FILE="/home/Hyman/nginx.tar.gz" echo "${FILE#*.}" # tar.gz echo "${FILE##*.}" # gz ext="${FILE#*.}" # 将结果保存到变量中 echo "$FILE has $ext" # 打印变量的值
在bash shell脚本获取文件的扩展名
请尝试以下示例:
file="/etc/udisks2/udisks2.conf" basename $file echo ${file##*/}
在bash shell脚本中,如何从完整文件名路径获取文件基本名
可以使用下面的方法:
file="/etc/udisks2/udisks2.conf" basename $file .conf ## 或者 t="${file%.conf}" echo "$t"
如果我们知道了后缀名,那么也可以这样获取文件名。
##代码##