Как я могу показать все типы файлов, содержащиеся в каталоге?

Есть ли какая-либо команда, которая сообщает мне в определенном каталоге, какие типы файлов существуют?

Я могу узнать тип файла, используя команду, подобную od -c myfile | less.

Но я не знаю, как это сделать для всех файлов в каталоге.

12
задан 14 April 2014 в 00:58

3 ответа

Хотя od -c действительно покажет содержание файла, это не хороший способ получить его тип файла. В то время как некоторые файлы будут содержать заголовок с типом файла, не все будут. Лучшим путем является команда file:

$ echo "hello" > foo.txt
$ file foo.txt
foo.txt: ASCII text

Так, для получения списка всех типов файлов в каталоге можно сделать:

for file in dir/*; do file "$file" | cut -d: -f 2; done | sort -u

Пример произвел:

 PNG image data, 1500 x 500, 8-bit/color RGBA, non-interlaced
 ASCII text
 directory
 GIF image data, version 89a, 22 x 22
 ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=becf821e4d814fdb69306d0b3f686eb06992f5e5, stripped

Объяснение

  • for file in dir/*; do ... done; : выполните итерации через все в dir (dir просто пример, необходимо изменить это на название фактического каталога, который Вы хотите перерыть), сохраняя каждый объект в свою очередь как $file
  • file "$file" : выполненный file на каждом из найденных объектов.
  • cut -d: -f 2 : распечатайте только второе поле (поля, определенные :)
  • sed 's/^ //; s/ +/ /g' : удалите пробелы с начала строки и преобразуйте последовательные пробелы в одиночный пробел.
  • sort -u : удалите типы дубликата файла
19
ответ дан 14 April 2014 в 00:58

Я, вероятно, сделал бы что-то вроде этого -

find . -type f -exec file {}  \;

, Который будет искать от текущего пути, для файлов (например, никакие каталоги) и затем выполняться эти file команда на каждом файле.

0
ответ дан 14 April 2014 в 00:58

Попробуйте это:

ls | xargs file -b | sort | uniq

, Как это работает:

ls: содержание каталога списка

файл-b : определите тип файла; не предварительно ожидайте имена файлов для вывода строк

вид : строки вида

uniq: опустите повторенные строки

0
ответ дан 14 April 2014 в 00:58

Другие вопросы по тегам:

Похожие вопросы: