小编典典

在 Bash 中提取文件名和扩展名

all

我想分别获取文件名(不带扩展名)和扩展名。

到目前为止我发现的最佳解决方案是:

NAME=`echo "$FILE" | cut -d'.' -f1`
EXTENSION=`echo "$FILE" | cut -d'.' -f2`

.这是错误的,因为如果文件名包含多个字符,它就不起作用。如果,假设我有a.b.js,它将考虑aand b.js,而不是a.band js

它可以很容易地在 Python 中完成

file, ext = os.path.splitext(path)

但如果可能的话,我不希望为此启动 Python 解释器。

有更好的想法吗?


阅读 155

收藏
2022-02-28

共1个答案

小编典典

首先,获取不带路径的文件名:

filename=$(basename -- "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"

或者,您可以关注路径的最后一个“/”而不是“。” 即使您有不可预测的文件扩展名,它也应该工作:

filename="${fullfile##*/}"
2022-02-28