我有一个没有扩展名的文件,并且想要以编程方式向其添加扩展名。我知道file
命令会提供有关文件扩展名的信息。如何利用此功能将扩展名添加到文件?我正在下载的文件可以假定为图像文件(png,jpg等)
我期望的结果是:
Input: filename
Output: filename.ext
全部包含在bash脚本中
答案 0 :(得分:2)
这样的事情应该让您入门:
#!/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
标签。
答案 1 :(得分:0)
您可以尝试查找或创建文件类型到文件扩展名的映射,但是没有通用的方法。考虑一下JPEG图像,您可以使用.jpg或.jpeg扩展名,它们的含义相同。同样适用于MP4视频容器...
此外,在Linux上,文件扩展名甚至对大多数程序都没有影响,因此您不必关心它,但是,如果您仍然想对某些类型的文件使用它,则可以查看以下答案:{{3 }}