显示具有特定扩展名的所有文件的文件名

时间:2015-07-21 14:09:54

标签: linux bash shell zenity

我想要的是用户使用zenity从任何地方选择文件,脚本将检测文件扩展名,例如(.tar.gz)或(.zip),并相应地对它们执行操作。这是一个例子。

#! /bin/bash

FILE=$(zenity --file-selection --title="Select a file to check")
echo "File: $FILE"

if [ "$FILE" = "*.zip" ] 
then
    echo "File that is a .zip found"
    FILENAMENOEXT="${FILE%.*}"
    echo "Filename with extention $FILENAMENOEXT"
    #Perform xx action to $FILE if it is a zip

elif [ "$FILE" = "*.tar.gz" ]
then
echo "File is a .tar.gz found"
FILENAMENOEXT="${FILE%.tar.*}"
echo "Filename with extention $FILENAMENOEXT"
#Perform xx action to $FILE if it is a t.tar.gz

else
    echo "File is neither .zip nor .tar.gz"
fi

echo "test $FILENAMENOEXT"

1 个答案:

答案 0 :(得分:2)

这几乎是正确的。

您需要使用[[进行模式匹配并引用禁用模式匹配。

因此,您需要[ "$FILE" = "*.zip" ]代替[[ "$FILE" = *".zip" ]],而不是[ "$FILE" = "*.tar.gz" ],而不是[[ "$FILE" = *".tar.gz" ]]

您还可以使用case语句代替if / elif

case "$FILE" in
*.zip)
    echo "File that is a .zip found"
    ;;
*.tar.gz)
    echo "File is a .tar.gz found"
    ;;
*)
    echo "File is neither .zip nor .tar.gz"
    ;;
esac