команда file

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 опре­де­ля­ет фак­ти­че­ский тип фай­ла, неза­ви­си­мо от его расширения.

Он име­ет про­стой син­так­сис с несколь­ки­ми опциями:

 

Теперь, когда вы зна­е­те син­так­сис, давай­те посмот­рим, как исполь­зо­вать коман­ду file.

 

Пример команды file в Linux

В про­стей­шем виде вы може­те исполь­зо­вать коман­ду file с име­нем фай­ла или путем к фай­лу, и он пока­жет тип файла.

 

Вот при­мер:

destroyer@andreyex: ~ / $ file cpluplus.cpp

cpluplus.cpp: C++ source, ASCII text

 

Давай­те посмот­рим, как мож­но исполь­зо­вать его с его параметрами.

 

Удалить имя файла из вывода

Вы може­те исполь­зо­вать опцию -b, и в выход­ных дан­ных будет пока­зан толь­ко тип фай­ла без име­ни фай­ла. Это может быть полез­но при напи­са­нии сценариев.

 

Взгля­ни­те на тот же при­мер, кото­рый вы виде­ли ранее:

destroyer@andreyex:~/$ file -b cpluplus.cpp
C++ source, ASCII text

 

Получить MIME-тип файла

Вы так­же може­те отоб­ра­зить MIME-тип фай­ла бла­го­да­ря опции -i.

 

Вот при­мер коман­ды для видео­фай­ла с инфор­ма­ци­ей о типе 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.

 

Поз­воль­те нам пока­зать вам при­мер с опци­ей -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 с несколькими файлами

Фай­ло­вая коман­да может быть запу­ще­на для несколь­ких фай­лов одновременно.

 

Вот при­мер для вас, что­бы вы мог­ли уви­деть это в действии:

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 для несколь­ких фай­лов, вам не все­гда нуж­но ука­зы­вать все име­на фай­лов. Вы може­те исполь­зо­вать регу­ляр­ные выра­же­ния вместо.

Это дей­стви­тель­но зави­сит от ваших тре­бо­ва­ний и вооб­ра­же­ния, как вы мог­ли бы исполь­зо­вать его. Я пока­жу несколь­ко примеров.

Если вы хоти­те отоб­ра­зить тип фай­ла всех фай­лов в теку­щем ката­ло­ге, про­сто исполь­зуй­те это:

 

Если вы хоти­те отоб­ра­зить тип фай­ла для всех фай­лов с опре­де­лен­ным рас­ши­ре­ни­ем, вы так­же може­те сде­лать это:

 

Воз­мож­но­сти без­гра­нич­ны. Хоти­те отоб­ра­зить тип фай­ла с име­нем, начи­на­ю­щим­ся с ‘a’? Исполь­зо­вать этот:

 

Другие параметры, которые вы можете использовать с командой file

Вот несколь­ко дру­гих опций с коман­дой file, кото­рые вы може­те использовать:

  • -L: пере­хо­дить по сим­во­ли­че­ским ссыл­кам и сооб­щать тип фай­ла назначения
  • -f file_name: читать име­на фай­лов построч­но из задан­но­го име­ни фай­ла и сооб­щать об их типе файла