2013-04-22 1 views
1

Мне нужно написать скрипт bash, чтобы определить, является ли файл PDF-файлом. Однако я не могу просто использовать имя файла или расширение.Сообщите, если файл является PDF в bash

Например:

test.pdf.encrypt - не откроется, как сам файл зашифрован, и файл неизвестного типа компьютер не может распознать.

test.pdf.decrypt - откроется, даже если расширение .decrypt

Как смотрит на расширение не помогает и как зашифрованное и расшифрованный файл имеет .pdf в середине имени, есть способ проверить систему и посмотреть, читается ли файл с помощью PDF-ридера?

Мне просто нужна команда, которую я могу ввести в оператор if в bash.

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' 

независимо от расширения файла.

 Смежные вопросы

  • Нет связанных вопросов^_^