我有两个文件。第一个包含电影,第二个包含副标题。首先我拍摄电影文件,我想在相同的目录中搜索字幕文件。我知道我可以用grep做到这一点,但是如何通过仅考虑N个字母来比较两个文件名称,并且它不应该考虑字符-
,_
,.
。
我是bash的新手,编写这些命令时仍然存在一些问题。 有人可以帮忙吗?
示例:文件1:Avengers.avi
文件2:av-engers.sub
文件3:aveMgers.sub
前缀应为4个字母长=>它将匹配文件1和文件2,因为如果我们排除 - 字符,它们至少有前4个字符相同。文件3不尊重这一点,因此文件1和文件2将被复制到新的文件夹aven(前4个字符)中。最后一部分非常重要。
答案 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