BASH - 变量中的文件测试

时间:2015-08-18 17:37:41

标签: bash

我试图找出文件是否是图像,然后根据结果做一些事情。这适用于当前工作目录和其他目录中的文件:

file -ib "$i" | grep "image/"

但这仅适用于当前目录中的文件(调用脚本的地方)

TEST=$(file -ib "$i" | grep "image/")

if [ "$TEST" == "" ]
then
    echo "Image"
else
    echo "Not an image"
fi

所以像../../my.jpg这样的东西在第一种情况下起作用,但总是给出"不是图像"在第二种情况下。我想在系统的任何地方使用我的脚本文件。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

请尝试:

path="path/to/images/folder"
for i in $(find $path -type f); do
  file -ib "$i" | grep -q "image/" && echo "$i: Image" || echo "$i: Not an image";
done

答案 1 :(得分:0)

尝试:

TEST=$(file -i "$i" | grep ': *image/')

if [ "$TEST" = "" ];then 
  echo "not an image"
else 
  echo "it is an image"
fi