匹配bash中的文件名

时间:2015-10-23 14:31:29

标签: bash

我有两个文件。第一个包含电影,第二个包含副标题。首先我拍摄电影文件,我想在相同的目录中搜索字幕文件。我知道我可以用grep做到这一点,但是如何通过仅考虑N个字母来比较两个文件名称,并且它不应该考虑字符-_.

我是bash的新手,编写这些命令时仍然存在一些问题。 有人可以帮忙吗?

示例:文件1:Avengers.avi

文件2:av-engers.sub

文件3:aveMgers.sub

前缀应为4个字母长=>它将匹配文件1和文件2,因为如果我们排除 - 字符,它们至少有前4个字符相同。文件3不尊重这一点,因此文件1和文件2将被复制到新的文件夹aven(前4个字符)中。最后一部分非常重要。

1 个答案:

答案 0 :(得分:1)

for avi in *.avi
do
    # remove punctuation characters
    aviPrefix="${avi//[-_.]//}"
    # get first 4 characters
    aviPrefix="${avi:0:4}"
    for sub in *.sub
    do
        subPrefix="${sub//[-_.]//}"
        subPrefix="${sub:0:4}"
        # Test if files have the same prefix
        if [[ $subPrefix = $aviPrefix ]]
        then
            if ! [[ -d "$aviPrefix" ]];
            then 
                mkdir "$aviPrefix"
                cp "$avi" "$aviPrefix"
            fi
            cp "$sub" "$aviPrefix"
        fi
    done
done