在终端中重命名多个文件

在终端中重命名多个文件

我的一个文件夹中有 40 个 mp4 文件。

每个文件都以 开头video_。每个文件的格式都是video_*.mp4

我需要重命名所有文件,并video_从每个文件的开头删除。我该如何从终端执行此操作?

答案1

您可以通过这些文件所在目录中的终端命令来执行此操作。

rename 's/^video_//' *.mp4

这意味着选择所有以 开头的文件名video_并用空字符替换video_。我猜s是“替换”的意思。

^显示字符串的开头。如果省略^,则无论第一次出现的video_位于字符串的什么位置,它都将被删除。但对于您来说,这并不重要。

笔记:Ubuntu 17.04 以上版本不附带此rename软件包,但你仍然可以通过以下方式从默认存储库安装它sudo apt install rename

答案2

  • 使用renameprename) :

    rename -n 's/^video_//' video_*.mp4
    

    如果您对将要进行的更改感到满意,请删除-n以让操作实际发生:

    rename 's/^video_//' video_*.mp4
    
  • 使用bash参数扩展:

    for file in video_*.mp4; do mv -i "$file" "${file#video_}"; done
    
    • ${file#video_}video_是从文件名开头删除的参数扩展模式。

    或者

    for file in video_*.mp4; do mv -i "$file" "${file/video_/}"; done        
    
    • 假设video_文件名中只出现一次

    • ${file/video_/}是一个bash参数扩展模式,它将video_用空白替换文件名。

答案3

使用rename

rename 's/^video_//' *.mp4

相关内容