2013-04-22 55 views
1

我需要寫一個bash腳本判斷一個文件是PDF文件。但是,我不能簡單地使用文件名或擴展名。告訴如果文件是PDF在bash

例如:

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 

回答

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 
4

另一種選擇是對文件使用file

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

在Linux和Solaris文件命令將確定一個類型的文件;特別是PDF文檔是很多類型之一。

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

不管文件擴展名如何。

相關問題