重命名整个动画系列

重命名整个动画系列

我在电脑上下载了这部火影忍者动漫。它们的名字如下

NARUTO 50 — The Fifth Gate- A Splendid Ninja is Born_low.mp4

我只是想将它们批量重命名为类似这样的名称Naruto_50

有没有简单的方法可以做到这一点?我习惯使用终端。

答案1

如果您想继续使用 shell,有一个简单但繁琐的方法。您可以利用 的bash参数扩展。

  • 字符串长度修改:

    ${PARAMETER:OFFSET}:从 OFFSET 位置展开。

    ${PARAMETER:OFFSET:LENGTH}:从位置 OFFSET 扩展到最终 LENGTH。

    例如:

    $ test="This is a long string"
    $ echo $test
    This is a long string.
    $ echo ${test:0:4}
    This
    
  • 案例修改:

    ${PARAMETER^}:第一个字符大写。

    ${PARAMETER^^}:全部大写。

    ${PARAMETER,}:第一个小写字母。

    ${PARAMETER,,}:全部小写。

    $ test="This Is A Long String"
    $ echo ${test,}
    this Is A Long String.
    $ echo ${test,,}
    this is a long string.
    
  • 子串删除:

    ${PARAMETER#PATTERN}bash从字符串开头删除一个模式,如您所见。尝试找到最短的匹配。

    ${PARAMETER##PATTERN}:相同,但是最长匹配。

    ${PARAMETER%PATTERN}, ${PARAMETER%%PATTERN}:从字符串的结尾开始。

    例如:

    $ test="This is a long, long string."
    $ echo ${test#*long}
    , long string.
    $ echo ${test##*long}
    string.
    $ echo ${test%long*}
    This is a long, 
    
  • 搜索和替换:

    ${PARAMETER/PATTERN/STRING}:将第一次出现的 PATTERN 替换为 STRING。

    ${PARAMETER//PATTERN/STRING}:替换所有出现的项。

    ${PARAMETER/PATTERN}:删除第一次出现的。

    ${PARAMETER//PATTERN}: 移除所有。

    $ test="This is a long, long string."
    $ echo ${test/long/big}
    This is a big, long string.
    $ echo ${test//long/big}
    This is a big, big string.
    $ echo ${test//long}
    This is a , string. 
    

因此,您可以制作一个简单的for循环并逐步进行更改。例如:

#!/bin/bash
for i in *; do
    ext="${i##*.}" # get extension
    name="${i%% --*}" # get original name
    lname="${name,,}" # lowercase
    nsname="${lname// /_}" # all spaces to underscore
    mv "$i" "$nsname.$ext"
done

答案2

来自默认 Ubuntu 存储库的 pyRenamer 是一个图形重命名器应用程序,支持使用模式重命名文件,包括 pyRenamer 内置的模式表达式。将鼠标移到原始文件名模式重命名文件名模式字段以显示该字段可用的模式表达式列表。单击预览按钮预览更改,然后再应用。点击改名按钮重命名文件。这是批量重命名一系列视频文件的最简单方法。

pyRenamer 可从 Ubuntu 16.04 及更早版本的默认 Ubuntu 存储库中获得。在 Ubuntu 18.04 及更高版本中,pyRenamer 已被替换为GP重命名或智能文件重命名器 snap 包 ( sudo snap install smart-file-renamer)。

在此处输入图片描述

举个例子,你需要匹配系列中视频的编号和.mp4文件名末尾的扩展名,然后替换为Naruto_在文件名开头替换为重命名文件名模式场地。

答案3

你也可以使用基于 perl 的rename命令:类似

rename -- 's/(\w+)\s+(\w+).*/$1_$2.mp4/' *.mp4

它采用前两个“单词”(单词字符序列,由空格分隔),丢弃名称的其余部分,然后输出由下划线分隔的单词,后跟.mp4点扩展名。

如果您想要按照问题所示对第一个单词进行标题大小写处理,则可以使用\u\L修饰符

rename -- 's/(\w+)\s+(\w+).*/\u\L$1_$2.mp4/' *.mp4

使用-n(no-op) 和-v(verbose) 开关和示例文件名进行测试

$ rename -nv -- 's/(\w+)\s+(\w+).*/\u\L$1_$2.mp4/' *.mp4
NARUTO 50 — The Fifth Gate- A Splendid Ninja is Born_low.mp4 renamed as Naruto_50.mp4

你可以做得更好 - 例如让它更普遍地处理点后缀,而不是假设它们都是.mp4- 你可能会发现正则表达式教程有用。

答案4

我建议ThunarThunar Bulk Rename

  • 打开一个终端

  • 安装它,执行命令:

    • sudo apt install --no-install-recommends thunar

thunar-批量重命名-1


就你的情况而言,这可能是方法(西班牙语)

第一步: thunar-批量重命名-2

第二步: thunar-批量重命名-3

相关内容