我有几个名为:
的文件 whatever.S02E01.avi
和What_I_want - 2x01 - blablabla.srt
,
whatever.S02E02.avi
和What_I_want - 2x02 - blablablabla.srt
,
等等。
如何使用从srt文件中获取的名称重命名avi文件?我需要一个从srt文件中读取名称的脚本将其与avi文件进行比较,如果有巧合,例如2x01
与S02E01
匹配,请获取srt文件的名称并重命名具有相同名称的avi文件。
我有一个脚本可以将srt文件与avi文件合并,但前提是它们具有相同的名称。
提前致谢。
答案 0 :(得分:3)
试试这个:
#!/bin/bash
find . -iname "*.avi" | while read f
do
id=$(echo $f | sed -n 's/.*.S\([0-9]\+\)E\([0-9]\+\)..*/\1x\2/p' | sed 's/^0*//')
if [ -z "$id" ]; then
echo "Warning! there's no match for $f"
else
srt=(*$id*)
newName=$(echo $srt | sed 's/.srt/.avi/g')
mv "$f" "$newName"
fi
done
*.avi
个文件。SE_E_
转换为_x_
sed
删除前导零(SE02
- > 2x
,而不是02x
)