Linux 对于Ubuntu中的f in*.tiff,文件名带有扩展名

Linux 对于Ubuntu中的f in*.tiff,文件名带有扩展名,linux,bash,ubuntu-14.04,Linux,Bash,Ubuntu 14.04,据我从其他示例(例如转换目录中的图像的示例)中了解,以下代码应将不带扩展名的文件名存储在$f中: f in *.tiff 当我尝试使用以下代码更改扩展时: for f in *.tiff; do mv "$f" "$(basename "$f").jpg"; done 我最终得到的文件名是diff_14.tiff.jpg。这应该发生吗?我怎样才能解决这个问题 注意:由于这个原因,链接中的转换脚本无法工作。我试图将所有.tiffs批量转换为.jpgs,并将问题缩小到文件名提取。我改变扩展作为一

据我从其他示例(例如转换目录中的图像的示例)中了解,以下代码应将不带扩展名的文件名存储在
$f
中:

f in *.tiff
当我尝试使用以下代码更改扩展时:

for f in *.tiff; do mv "$f" "$(basename "$f").jpg"; done
我最终得到的文件名是
diff_14.tiff.jpg
。这应该发生吗?我怎样才能解决这个问题


注意:由于这个原因,链接中的转换脚本无法工作。我试图将所有
.tiff
s批量转换为
.jpg
s,并将问题缩小到文件名提取。我改变扩展作为一个测试;我知道它不会转换图像。

man basename说“打印名称时删除任何前导目录组件”。这不是您想要的。相反:

for f in *.tiff; do mv "$f" "${f%.tiff}.jpg"; done

细节:

只是好奇:为什么要投否决票?