Тестирование для определенного формата файла

Это продолжение нормального текстового файла, обнаруженного файлом в виде текста программы ASCII Pascal

Кажется, file нельзя доверять все время.

Кажется возможным, что конкретный файл может быть обнаружен как имеющий encoding/format1 и encoding/format2 . file говорит мне, что это encoding/format1 , но мне нужно проверить, удовлетворяет ли она также ограничениям encoding/format2 .

  • Есть ли способ сделать это?
  • Есть ли способ, которым я могу спросить «Проверьте, соответствует ли этот файл правилам английского текста ASCII (или какой-либо другой кодировки )», и ответ будет «да» или «нет»?

  • Более сложная команда файлов для глубокого контроля?
  • 2 Solutions collect form web for “Тестирование для определенного формата файла”

    Возможно, вы можете использовать опцию --keep-going ( -k ) file . Он записывает больше подходящих форматов.

    Связанное справочное описание этой опции:

    Не останавливайтесь на первом матче, продолжайте движение. В последующих матчах будет добавлена ​​строка '\ 012-'. (Если вы хотите использовать новую строку, см. Параметр -r.) Сначала начинается волшебный паттерн с наивысшей силой (см. Параметр -l).

    Отвечаю только на ваш второй вопрос, поскольку jofel уже ответил первым .

    • Есть ли способ, которым я могу спросить «Проверьте, соответствует ли этот файл правилам английского текста ASCII (или какой-либо другой кодировки)», и ответ будет «да» или «нет»?

    См. -e / --exclude . Из file(1) :

    -e, –exclude testname

    Исключите тест, названный в имени testname, из списка тестов, выполненных для определения типа файла.

    […]

    • soft Consults magic files

    Эти волшебные файлы отвечают за отчет Pascal, поэтому -e soft должно быть достаточно. Вы также можете попробовать исключить другие тесты из этого списка, если вы оставите ascii включенным.

    Для теста «да / нет» в сочетании с -b («короткий», т. --mime-encoding Без имени файла) и « --mime-encoding , выводится только кодировка. Затем это простое сравнение строк:

     if [ "$(file -b --mime-encoding -e soft $file)" == "us-ascii" ] ; then echo yes else echo no fi 
    Interesting Posts

    Улучшить команду sed для замены первого экземпляра символа и всех следующих символов?

    Не удается использовать sudo при входе через ssh

    Могу ли я использовать функцию sudoers без включения бита suid?

    Скрипт резко завершается завершенным сообщением

    Повторное подключение системы

    Raspberry PI Connect2 Pi не устанавливает необходимые драйверы

    rngd – несколько экземпляров из сценария init

    Есть ли возможность отправлять файлы ядра в удаленное место, не сохраняя их локально?

    Копирование установки, отличной от EFI / GPT, к установке EFI / GPT

    gnupg на Arch Linux сломан с момента обновления readline – не удается найти libreadline.so.6

    «SELinux предотвращает / usr / sbin / openvpn от доступа name_bind на tcp_socket"

    relabel hfs + объемы

    Маркировка / слияние нескольких сетевых адресов

    Используйте grep для соответствия текста в нескольких файлах

    используя grep для отображения записей, которые соответствуют шаблону и присутствуют как минимум в X раз

    Linux и Unix - лучшая ОС в мире.