Открытие офисных файлов через файловый менеджер Midnight Commander происходит двумя методами. Первый метод - это определение типа файла по его расширению через регулярное выражение. Второе - это определение типа файла через анализ файла, который производится с помощью утилиты file.
Проблема в том, что утилита file для файлов с расширением *.xlsx может выдавать разные типы файлов:
Отчет хозяйственный.xlsx: Microsoft OOXML
Промежуточный отчет.xlsx: Microsoft Excel 2007+
И эта особенность не учитывается в настройках MC, которые находятся в меню Команда - Редактировать файл расширений. Проблема усугубляется тем, что часто файлы документов находятся на ресурсах Samba, и при стандартном монтировании имеют права на исполнение. Поэтому такие файлы MC пытается запустить как программы, выдавая в консоль ошибку:
(bad magic number): Exec format error
В Midnight Commander v.4.8.18 блоки настроек выглядят так:
# Microsoft Word Document
regex/i/\.(do[ct]|wri)$
Open=/usr/lib/mc/ext.d/doc.sh open msdoc
View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msdoc
type/^Microsoft\ Word
Open=/usr/lib/mc/ext.d/doc.sh open msdoc
View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msdoc
...
# Microsoft Excel Worksheet
regex/i/\.xl[sw]$
Open=/usr/lib/mc/ext.d/doc.sh open msxls
View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msxls
type/^Microsoft\ Excel
Open=/usr/lib/mc/ext.d/doc.sh open msxls
View=%view{ascii} /usr/lib/mc/ext.d/doc.sh view msxls
Здесь видно, что по регулярному выражению не будут определяться файлы *.docx и *.xlsx. А по содержимому файлов, как было показано выше, будет определяться только часть файлов. Как это исправить? Очень просто: надо доработать регулярные выражения.
Для документов MS Word
Было:
regex/i/\.(do[ct]|wri)$
Стало:
regex/i/\.(do[ct]|wri)x?$
Для документов MS Excel
Было:
regex/i/\.xl[sw]$
Стало:
regex/i/\.xl[sw]x?$
После такой настройки открытие файлов офисного пакета будет работать правильно. Перезапуска Midnight Commander не требуется.