Thank you for reading this post, don't forget to subscribe!
Вот различные примеры использования команды file в Linux для определения фактического типа файла и сбора соответствующей информации.
Вы видели команды для создания файла в Linux. Вы также видели команду для удаления файла в Linux. Давайте поговорим о команде file в этой статье.
Что такое команда file в Linux и Unix?
Как вы узнаете тип файла? Позвольте мне догадаться, по его расширению, верно? Мы имеем в виду, если вы видите файл с именем MyData.csv, вы думаете, что файл в формате CSV.
Но расширения файлов в Linux и Unix не имеют реального значения. Вы можете назвать CSV-файл, ZIP-файл. Вы можете не использовать расширение вообще.
Команда file пригодится в таких ситуациях. Команда file в Linux определяет фактический тип файла, независимо от его расширения.
Он имеет простой синтаксис с несколькими опциями:
1 |
file [option] filename |
Теперь, когда вы знаете синтаксис, давайте посмотрим, как использовать команду file.
Пример команды file в Linux
В простейшем виде вы можете использовать команду file с именем файла или путем к файлу, и он покажет тип файла.
1 |
file filename |
Вот пример:
destroyer@andreyex: ~ / $ file cpluplus.cpp
cpluplus.cpp: C++ source, ASCII text
Давайте посмотрим, как можно использовать его с его параметрами.
Удалить имя файла из вывода
Вы можете использовать опцию -b, и в выходных данных будет показан только тип файла без имени файла. Это может быть полезно при написании сценариев.
1 |
file -b filename |
Взгляните на тот же пример, который вы видели ранее:
destroyer@andreyex:~/$ file -b cpluplus.cpp
C++ source, ASCII text
Получить MIME-тип файла
Вы также можете отобразить MIME-тип файла благодаря опции -i.
1 |
file -i filename |
Вот пример команды для видеофайла с информацией о типе MIME и без нее:
destroyer@ andreyex:~/$ file my_video.mp4
my_video.mp4: ISO Media, MP4 v2 [ISO 14496-14] destroyer@ andreyex:~/$ file -i my_video.mp4
my_video.mp4: video/mp4; charset=binary
Вы можете комбинировать опции -b и -i.
Получить информацию о типе файла в файле архива
Если вы распаковали каталог и теперь у вас есть сжатый файл. Вы можете проверить несжатое содержимое, чтобы определить тип файла с опцией -z.
1 |
file -z compressed_file |
Позвольте нам показать вам пример с опцией -z и без нее:
destroyer@ andreyex:~/$ file author-pro.zip
author-pro.zip: Zip archive data, at least v2.0 to extract
destroyer@ andreyex:~/$ file -z author-pro.zip
author-pro.zip: PHP script, ASCII text (Zip archive data, at least v2.0 to extract)
Используйте команду file с несколькими файлами
Файловая команда может быть запущена для нескольких файлов одновременно.
1 |
file file1 file2 file3 |
Вот пример для вас, чтобы вы могли увидеть это в действии:
destroyer@ andreyex:/$ file cpluplus.cpp andreyex.txt bash_script.sh
cpluplus.cpp: C++ source, ASCII text
andreyex.txt: ASCII text
bash_script.sh: Bourne-Again shell script, ASCII text executable
Используйте команду file с регулярным выражением
Если вы хотите использовать команду file для нескольких файлов, вам не всегда нужно указывать все имена файлов. Вы можете использовать регулярные выражения вместо.
Это действительно зависит от ваших требований и воображения, как вы могли бы использовать его. Я покажу несколько примеров.
Если вы хотите отобразить тип файла всех файлов в текущем каталоге, просто используйте это:
1 |
file * |
Если вы хотите отобразить тип файла для всех файлов с определенным расширением, вы также можете сделать это:
1 |
file *.txt |
Возможности безграничны. Хотите отобразить тип файла с именем, начинающимся с ‘a’? Использовать этот:
1 |
file [a]* |
Другие параметры, которые вы можете использовать с командой file
Вот несколько других опций с командой file, которые вы можете использовать:
- -L: переходить по символическим ссылкам и сообщать тип файла назначения
- -f file_name: читать имена файлов построчно из заданного имени файла и сообщать об их типе файла