首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重命名许多文件的特定部分

重命名许多文件的特定部分
EN

Unix & Linux用户
提问于 2018-12-07 08:52:22
回答 2查看 70关注 0票数 2

我有一堆文件名叫:

代码语言:javascript
复制
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之间的空间。示例

代码语言:javascript
复制
Brooklyn Nine-Nine S01E08 [H264].mkv

我已经找到了一个删除所有空格的命令:

代码语言:javascript
复制
IFS="\n"
for file in *.mkv;
do
    mv "$file" "${file/[[:space:]]}"
done

但我只想删除Sxx和Exx之间的空间。

EN

回答 2

Unix & Linux用户

发布于 2018-12-07 09:36:34

最简单的方法是使用rename工具,它允许在许多文件名中进行简单的搜索和替换:

rename [options] ...

像这样的事情应该可以做到:

rename " E0" E0 Brooklyn*.mkv

注意,如果您使用类似Debian的发行版,那么您的rename命令可能会用不同的输入语法来调用Perl脚本,而不是使用来自util-linux的通常实用程序。在这种情况下,使用rename.ul调用正确的工具。为什么Debian/Ubuntu上的重命名实用程序与其他发行版(如CentOS )上的重命名实用程序不同?

票数 1
EN

Unix & Linux用户

发布于 2018-12-07 10:16:22

for循环可以编辑如下:

代码语言:javascript
复制
for file in *.mkv;
do
   mv "$file" "${file//S01 E0/S01E0}"
done

或者使用rename命令:

代码语言:javascript
复制
rename 's/S01 E0/S01E0/' *.mkv
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/486536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档