我有一堆文件,名为:
Brooklyn Nine-Nine S01 E01 [H264].mkv
Brooklyn Nine-Nine S01 E02 [H264].mkv
Brooklyn Nine-Nine S01 E03 [H264].mkv
Brooklyn Nine-Nine S01 E04 [H264].mkv
Brooklyn Nine-Nine S01 E05 [H264].mkv
Brooklyn Nine-Nine S01 E06 [H264].mkv
Brooklyn Nine-Nine S01 E07 [H264].mkv
Brooklyn Nine-Nine S01 E08 [H264].mkv
...
我想重命名它们,以便删除 S01 和 E08 之间的空格。例子
Brooklyn Nine-Nine S01E08 [H264].mkv
我已经找到了删除所有空格的命令:
IFS="\n"
for file in *.mkv;
do
mv "$file" "${file/[[:space:]]}"
done
但我只想删除 Sxx 和 Exx 之间的空格。
答案1
最简单的方法是使用该rename
工具,它可以让您在许多文件名中进行简单的搜索和替换:
rename [options] <expression> <replacement> <file>...
像这样的事情应该做:
rename " E0" E0 Brooklyn*.mkv
请注意,如果您使用的是类似 Debian 的发行版,您的rename
命令可能会调用具有不同输入语法的 Perl 脚本,而不是util-linux
.在这种情况下,请使用rename.ul
调用正确的工具。为什么 Debian/Ubuntu 上的重命名实用程序与其他发行版(例如 CentOS)上的重命名实用程序不同?
答案2
for 循环可以编辑如下:
for file in *.mkv;
do
mv "$file" "${file//S01 E0/S01E0}"
done
或使用rename
命令:
rename 's/S01 E0/S01E0/' *.mkv