如何批量重命名文件?

如何批量重命名文件?

我有几百个文件,分别名为 hortstu01-01-14 和 hortstu01-02-14...你明白了吗?

那么,一半的文件名为 hortstu_01-03-14,然后是 hortstu_01-04-14。

这搞乱了按名称对文件进行排序并按我希望的顺序排列文件。所以我想将没有下划线的文件重命名为 hortstu_

是否可以批量执行此操作? 如果可以,该怎么做?

答案1

打开终端。首先,rename通过输入仔细检查您是否有 perl man rename。底部应该显示perl v5.18.2或类似内容。(我认为 Ubuntu 总是附带 perl rename,但其他发行版附带其他版本。)

如果版本正确,则cd转到包含这些文件的目录。然后运行

 rename 's/^hortstu/hortstu_/' hortstu[!_]*

解释

  • 这将重命名所有匹配的文件hortstu[!_]*。这意味着以 开头的文件hortstu,并且不是_下一个。
  • 然后它将通过以下方式重命名它们
    • 查找^hortstu(即hortstu在字符串的开头)
    • 将其替换为hortstu_
  • 注意:格式hortstu[!_]*重击。的格式^hortstu是正则表达式。

答案2

或者使用 Bash 单行程序导航到包含文件的文件夹,然后在终端中运行此命令:

for file in hortsu*;do echo "$file" "${file/_/-}";done;

基本上,对于名称为“hortsu”且后跟任意字符“*”的文件,此命令会回显“$file”的名称以及文件名称,其中所有下划线均替换为破折号。当您对此感到满意时,只需将其替换echocp即可将文件复制到新名称。

一个 Python 式的解决方案。

在安全的环境中尝试此操作,也许将一两个文件复制到新文件夹以测试其工作原理。

将以下代码保存在 gedit 中,并为其命名一个带有“.py”文件扩展名的名称,例如rename_files_in_current_directory.py

# copy this code into gedit and save it to the directory with the files in it
import os
# for files in the current directory ('.')
for file_names in os.listdir('.'):
    if '_' in file_names:
        # using os.system use cp (copy) to copy file_names to file-names by replacing
        # underscore with dash
        os.system('cp '+file_names+' '+file_names.replace('_','-'))

确保已安装 python。'sudo apt-get install python'

在终端中导航到包含脚本和文件的文件夹,然后运行:

python the_name_given_to_the_python_script.py

笔记:

您可以删除上述命令中的破折号,脚本将删除下划线。

for file in hortsu*;do cp "$file" "${file/_/}";done;

或者在python脚本中更改:

file_names.replace('_','-')file_names.replace('_','')

答案3

对于那些喜欢 GUI 应用程序或只是喜欢预览结果的人来说,您可能想要安装 Thunar。它是 XFCE 的主要文件管理器;您可以在存储库中找到它。

当您在 Thunar 中选择多个文件并重命名它们(通过上下文菜单或 F2)时,您将看到一个精心设计的对话框,它支持各种重命名操作。您可以像这样解决问题:

在此处输入图片描述

相关内容