【问题标题】:Rename all files with same base name重命名具有相同基本名称的所有文件
【发布时间】:2016-09-13 23:33:51
【问题描述】:

当我制作乳胶文档时,会创建多个具有相同基本名称但扩展名不同的文件。 如果我想重命名原始文件,我还必须重命名文件夹中的所有其他文件。

有没有办法做到以下几点?

mv file_basename.* file_newname.[whatever was globbed]

【问题讨论】:

    标签: bash glob


    【解决方案1】:

    让我们考虑一个包含这些文件的目录:

    $ ls
    file_basename.a  file_basename.b  file_basename.c
    

    现在,让我们运行 perl rename 实用程序来重命名文件:

    $ prename 's/file_basename/file_newname/' *
    $ ls
    file_newname.a  file_newname.b  file_newname.c
    

    如您所见,所有文件都有新名称。

    prename,有时称为rename,是 perl 包的一部分。

    请注意,某些 Linux 发行版默认安装不同且不兼容的版本。如果您有其中之一,则上述命令将不起作用。有关prename 附带哪些发行版或如何在您的发行版上安装它的更多信息,请参阅here

    【讨论】:

      【解决方案2】:

      这是一个简单的 bash 脚本(我们称之为 rename-prefix):

      #!/bin/bash
      
      basename="$1"
      newname="$2"
      for file in "$basename"*; do
          mv -iv -- "$file" "$newname${file#$basename}"
      done
      

      它必须从文件所在的目录执行。你像这样运行它:

      rename-prefix file_basename. file_newname.
      

      【讨论】:

        猜你喜欢
        • 2011-01-27
        • 2022-06-14
        • 2021-10-24
        • 1970-01-01
        • 2022-07-06
        • 2014-04-26
        • 2022-11-15
        • 1970-01-01
        • 2019-06-10
        相关资源
        最近更新 更多