我有一堆文件名叫:
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之间的空间。
发布于 2018-12-07 09:36:34
最简单的方法是使用rename工具,它允许在许多文件名中进行简单的搜索和替换:
rename [options] ...
像这样的事情应该可以做到:
rename " E0" E0 Brooklyn*.mkv
注意,如果您使用类似Debian的发行版,那么您的rename命令可能会用不同的输入语法来调用Perl脚本,而不是使用来自util-linux的通常实用程序。在这种情况下,使用rename.ul调用正确的工具。为什么Debian/Ubuntu上的重命名实用程序与其他发行版(如CentOS )上的重命名实用程序不同?
发布于 2018-12-07 10:16:22
for循环可以编辑如下:
for file in *.mkv;
do
mv "$file" "${file//S01 E0/S01E0}"
done或者使用rename命令:
rename 's/S01 E0/S01E0/' *.mkvhttps://unix.stackexchange.com/questions/486536
复制相似问题