使用正则表达式确定bash中的正确扩展名

Bat*_*oid 1 regex bash

想知道是否有人可以用正则表达式和bash帮助我.

我正在尝试对只有一定扩展名的文件执行一组命令,在这种情况下:mpg,mpeg,avi和mkv.

我实际上在这里找到了一个解决方案,然而,它似乎没有用.如果有人能告诉我原因,我会很感激.

#!/bin/bash

# Configuration
TARGETDIR="$1"
TARGETEXT="(mpg|mpeg|avi|mkv)"

for d in `find $1 -type d`
do
    echo "Searching directory: $d"

    for f in "$d"/*
    do
            if [ -d "${f}" ];
            then
                    # File is a directory, do not perform
                    echo "$f is a directory, not performing ..."
            elif [ -f "${f}" ]; 
            then
                    filename=$(basename "$f")
                    extension="${filename##*.}"
                    if [ "$extension" == "$TARGETEXT" ];
                    then
                            echo "Match"
                    else
                            echo "Mismatch - $f - $extension"
                    fi
            fi
    done
done
Run Code Online (Sandbox Code Playgroud)

再次,任何帮助表示赞赏.

Sir*_*ius 6

这可以仅使用find命令来完成.

find $TARGETDIR -regex ".*\\.$TARGETEXT" -type f -exec your_command {} \;
Run Code Online (Sandbox Code Playgroud)