我通过邮件收到了一些重要文件。大约有 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
命令将以干方式运行,因此请将其删除以执行实际重命名。
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
确保试运行后删除命令。