批处理文件使用文件名列表重命名



我需要重命名1500 *.jpg文件。我有带有2列的文件名列表的文本文件,选项卡分隔:

  • 1305 1979
  • 1310 173
  • 1311 172

旧文件名 - 新文件名

  • 1305_1.jpg -1979
  • 1310_main_origin.jpg -173
  • 1311_2.jpg -172

我如何检查第一列和旧文件名的第一个数字,然后从2列重命名为4位数字?

//对不起我的英语

使用循环,如下所示:

while read -r old new
do
    arr=( ${old}_*.jpg )
    if (( ${#arr[@]} == 1 ))
    then
        mv "${arr[0]}" "$new.jpg"
    else
        echo "Error: Multiple files found for $old: ${arr[@]}"
    fi    
done < file

请注意,有安全检查以确保您没有具有相同前缀的多个文件。例如,如果您具有1305_1.jpg1305_2.jpg,则不能将它们都重命名为1979.jpg,因此脚本将打印一个错误。

尝试一下,然后验证它是您想要的。 changefile是包含更改

的文件的名称
while read from to; do
   echo "mv ${from}* $to"
done < changefile

您应该逆转订单更换file,以确保在130之前和130岁以前使用1306

我已经为另一个问题发布了这个答案,但是就问题,关键字和复杂性而言,这个问题似乎更相关,我也会在这里添加。

您可以使用Small Linux App Name Krename,并打开JavaScript插件。这是一个具有非常强大的重命名功能的免费工具。

  1. 安装krename并打开它
  2. 添加文件
  3. 转到插件选项卡并将您的JavaScript函数添加到功能定义部分,类似的内容:

    var files = [
        "Mickey",
        "Donald",
        "Duffy"
    ];
    function rename(){
      // krename_index is one of many special variables which can be added via ui
      return files[krename_index];
    }
    

这是一个简单的脚本,可以完成工作,但是它可以随心所欲。

  1. 转到文件名选项卡,然后在模板输入中调用您的功能,如下所示:

    [js; rename()]

您可以将上述代码与$前缀以保持原始文件名并添加到它。您可以使用"功能"按钮进一步实验。

  1. 预览新名称并通过单击完成按钮进行完整重命名。

相关内容

  • 没有找到相关文章

最新更新