Bash: скрипт для поиска файлов по типу mime - PullRequest
9 голосов
/ 23 июля 2011

Во-первых, у меня нет опыта в написании сценариев, поэтому будьте нежны со мной

В любом случае, я попытался создать скрипт для поиска файлов по типу mime (аудио, видео, текст и т. Д.), И вот плохой результат, который я придумал.

#!/bin/bash

FINDPATH="$1"
FILETYPE="$2"


locate $FINDPATH* | while read FILEPROCESS

do

   if  file -bi "$FILEPROCESS" | grep -q "$FILETYPE"
   then
      echo $FILEPROCESS
   fi

done

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

Итак, вы, ребята, можете помочь мне сделать это лучше? а также я не хочу полагаться на расширения файлов.

Обновление:

Вот что я сейчас использую

#!/bin/bash

FINDPATH="$1"


find "$FINDPATH" -type f | file -i -F "::" -f - | awk -v FILETYPE="$2"  -F"::" '$2 ~ FILETYPE { print $1 }'

Ответы [ 2 ]

6 голосов
/ 24 июля 2011

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

find . -print | file -if - | grep "what you want" | awk -F: '{print $1}'

или

locate what.want | file -if -

check man file

-i    #print mime types
-f -  #read filenames from the stdin
2 голосов
/ 24 июля 2011
#!/bin/bash
find $1 | file -if- | grep $2 | awk -F: '{print $1}'
...