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

9

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

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

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

    
задан M R R 02.04.2014 в 15:58
источник

3 ответа

17

Хотя 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 : удалить повторяющиеся типы файлов
ответ дан terdon 02.04.2014 в 16:30
источник
3

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

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

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

    
ответ дан Elliott Frisch 02.04.2014 в 16:35
1

Попробуйте следующее:

ls | xargs file -b | sort | uniq

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

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

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

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

uniq : пропустить повторяющиеся строки

    
ответ дан Wolfy 03.04.2014 в 16:31