首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个扩展名不同的类似文件重命名为第一个文件,但保留扩展名

将两个扩展名不同的类似文件重命名为第一个文件,但保留扩展名
EN

Unix & Linux用户
提问于 2022-06-12 10:04:14
回答 2查看 38关注 0票数 0

我在同一个目录中有一组.m4v和.srt文件,但是名称只匹配前3个字符。如何重命名.srt文件以匹配相应的.m4v文件(当然,保留.srt扩展名)?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-06-12 10:28:10

给定.m4v变量name中的一个$name名称,则通过在第一个空格中裁剪D3并添加.srt文件名后缀来获得相应.srt文件的名称。

这是用${name%% *}.srt完成的。这将从*中移除与$name匹配的最长后缀字符串,然后将.srt添加到该结果的末尾。

.srt文件的新名称是$name,但是.m4v文件的后缀改为.srt

这是用${name%.m4v}.srt完成的。这将从.m4v中移除匹配$name的(最短)后缀字符串,然后将.srt添加到该结果的末尾。

下面是一个循环,它使用上面的两个参数替换来重命名每个.srt文件,给定当前目录中的.mv4文件列表。此外,可以让您知道是否有一个.m4v文件没有对应的.srt文件,或者.srt文件的新名称是否已经存在。

代码语言:javascript
复制
for name in *.m4v; do
    if [ ! -e "${name%% *}.srt" ]; then
        printf 'Can not find .srt file for "%s"\n' "$name"
        continue
    elif [ -e "${name%.m4v}.srt" ]; then
        printf '.srt file for "%s" already exists\n' "$name"
        continue
    fi >&2

    mv -- "${name%% *}.srt" "${name%.m4v}.srt"
done
票数 0
EN

Unix & Linux用户

发布于 2022-06-12 12:52:30

zsh中:

代码语言:javascript
复制
for f (???.srt) () {
  (( $# == 1 )) && mv -- $f $1:r.srt
} $f[1,3]?*.m4v(NY2)

它重命名???.srt文件,以相同的3个字符前缀复制m4v文件的root名称,只要只有一个这样的m4v文件即可。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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