【发布时间】:2019-06-25 22:13:56
【问题描述】:
我有一个没有扩展名的文件,我想以编程方式为其添加扩展名。我知道file 命令提供了有关文件扩展名的信息。我如何利用它来将扩展名添加到文件中?我正在下载的文件可以假定为图像文件(png、jpg 等)
我想要的结果是:
Input: filename
Output: filename.ext
全部在 bash 脚本中
【问题讨论】:
标签: bash
我有一个没有扩展名的文件,我想以编程方式为其添加扩展名。我知道file 命令提供了有关文件扩展名的信息。我如何利用它来将扩展名添加到文件中?我正在下载的文件可以假定为图像文件(png、jpg 等)
我想要的结果是:
Input: filename
Output: filename.ext
全部在 bash 脚本中
【问题讨论】:
标签: bash
这样的事情应该让你开始:
#!/bin/bash
for f in "$@"; do
if [[ $f == *'.'* ]]; then continue; fi # Naive check to make sure we don't add duplicate extensions
ext=''
case $(file -b "$f") in
*ASCII*) ext='.txt' ;;
*JPEG*) ext='.jpg' ;;
*PDF*) ext='.pdf' ;;
# etc...
*) continue ;;
esac
mv "${f}" "${f}${ext}"
done
您必须检查每个潜在文件类型的 file 的输出,以找到合适的 case 标签。
【讨论】:
您可以尝试查找或创建文件类型到文件扩展名的映射,但没有通用的方法。想想 JPEG 图像,您可以使用 .jpg 或 .jpeg 扩展名,它们的含义相同。 MP4 视频容器也一样...
另外,在 linux 上,文件扩展名对大多数程序都无关紧要,所以你可以不关心它,但如果你仍然想对某些类型的文件这样做,你可以查看这个答案:https://stackoverflow.com/a/6115923/9759362
【讨论】: