使用单个命令重命名多个文件扩展名

使用单个命令重命名多个文件扩展名

我通过邮件收到了一些重要文件。大约有 150 个这样的文件。文件的扩展名被命名为 zip1、zip2、zip3、zip_ 等。我只想使用单个命令将这些文件的扩展名改回 zip,以避免手动重命名每个文件。

答案1

尝试:

rename 's/zip[^.]*$/zip/' /path/to/directory/containing/the/files/*

例子:

$ ls
bar.zip2  egg.zip4  foo.zip1  spam.zip3  test.zip_
$ rename 's/zip[^.]*$/zip/' *
$ ls
bar.zip  egg.zip  foo.zip  spam.zip  test.zip

答案2

使用 Ubuntu 16.04 及更早版本中默认 Ubuntu 存储库中的 pyRenamer 可以轻松完成此多次重命名任务。以下屏幕截图解释了如何执行此操作:

在此处输入图片描述

我知道这不是您要求的在终端中执行此操作的方法,但这是一种替代方法,您可能会觉得更容易,因为您可以在 pyRenamer 窗口中浏览要重命名的文件,而不是输入路径。

在 Ubuntu 18.04 及更高版本中,pyRenamer 已被替换为GP重命名或智能文件重命名器 snap 包 ( sudo snap install smart-file-renamer)。

答案3

使用mmv命令(通过 安装sudo apt-get install mmv):

mmv -n '*.zip*' '#1.zip'

第一个 * 匹配之前的所有内容。压缩第二个 * 匹配其后的所有内容。压缩#1它们分别成为具有后向引用和的匹配组#2。我们只保留第一个。压缩在最后。

笔记:使用-n选项后,mmv命令将以干方式运行,因此请将其删除以执行实际重命名。


或者通过组合findmv命令:

find source/dir -type f -name '*.zip*' -exec sh -c 'echo mv "$1" "${1%.*}.zip"' sh_mv {} \;
  • 指定source/dir源目录的路径。
  • -type f搜索F仅限文件。
  • -name '*.zip*'查找名称类似于 '*.zip*' 的文件类型
  • {}代表当前文件。
  • 完成"${1%.*}.zip",条纹文件扩展名并附加到.zip文件名。
  • 因此mv "$1" "${1%.*}.zip"将当前文件重命名为*.zip

笔记:echo确保试运行后删除命令。

相关内容