Bash:用于通过mime-type查找文件的脚本

时间:2011-07-23 19:50:30

标签: file bash find mime-types

首先,我没有编写脚本的经验,所以要对我很温和

无论如何,我尝试制作一个脚本来通过mime-type(音频,视频,文本等)查找文件,这就是我想出的糟糕结果。

#!/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 个答案:

答案 0 :(得分:6)

分叉(exec)很贵。这只运行file命令一次,因此速度很快:

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

locate what.want | file -if -

检查man file

-i    #print mime types
-f -  #read filenames from the stdin

答案 1 :(得分:2)

#!/bin/bash
find $1 | file -if- | grep $2 | awk -F: '{print $1}'