在bash中判断文件是否为PDF

时间:2013-04-22 16:58:36

标签: bash pdf file-type

我需要编写一个bash脚本来判断文件是否是pdf文件。但是,我不能简单地使用文件名或扩展名。

例如:

test.pdf.encrypt - 将无法打开,因为文件本身已加密且文件属于计算机无法识别的未知类型。

test.pdf.decrypt - 即使扩展名为.decrypt

也会打开

由于查看扩展名没有帮助,加密和解密文件的名称中间都有.pdf,有没有办法让系统测试并查看文件是否可以用PDF阅读器读取?

我只需要在bash中输入if语句的命令。

if [this file is a working pdf file]; do
   echo "$file is a working pdf file."
fi

3 个答案:

答案 0 :(得分:6)

另一种选择是在文件上使用file

type="$(file -b $file)"
if [ "${type%%,*}" == "PDF document" ]; then
  echo "$file is a PDF file."
fi

答案 1 :(得分:2)

每个PDF文件都以%PDF开头。您可以比较指定文件的前4个字符,以确保它是PDF。

FILE="/Users/Tim/Documents/My File.pdf"
if [ $(head -c 4 "$FILE") = "%PDF" ]; then
    echo "It's a PDF!"
fi

答案 2 :(得分:1)

在Linux和Solaris上,file命令将标识一种文件类型;特别是PDF文档是众多类型中的一种。

file filename.xxx | grep -q 'PDF' && echo 'is pdf file'  || echo 'is not pdf'

无论文件扩展名如何。