在Linux中使用file命令向文件添加扩展名

时间:2019-06-25 22:13:56

标签: bash

我有一个没有扩展名的文件,并且想要以编程方式向其添加扩展名。我知道file命令会提供有关文件扩展名的信息。如何利用此功能将扩展名添加到文件?我正在下载的文件可以假定为图像文件(png,jpg等)

我期望的结果是:

Input: filename

Output: filename.ext

全部包含在bash脚本中

2 个答案:

答案 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 }}