重命名终端中的多个文件

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

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

我需要重命名所有文件,其中video_从每个文件的video_删除。 我怎么能从终端那里做到这一点?

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

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

这意味着选择以video_所有文件名, video_替换为video_ 。 我猜s是为了“替代”。

^显示字符串的开头。 如果省略^ ,则无论字符串位于何处,都将删除第一次出现的video_ 。 但在你的情况下,这并不重要。

  • 使用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_

使用rename

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