sed和重命名文件

时间:2018-08-01 17:15:10

标签: ubuntu sed renaming

我在目录中有大量文件,每个文件的名称和长度都不同

种类的医生... 218级(1080p_30fps_H264-128kbit_AAC).mp4
另一种类型... Class 223(1080p_30fps_H264-128kbit_AAC).mp4
等等

我只想对“ Class 218”,“ Class 1”等进行排序,然后重命名这些文件 你们可以帮我使用sed吗?

1 个答案:

答案 0 :(得分:0)

我将使用Perl rename脚本。因此,在这种特定情况下,我将捕获“ Class” ,然后捕获一个或多个空格以及一个或多个数字作为捕获组,然后使用该重命名文件,同时保留相同的扩展名:

rename --dry-run 's/.*(Class\s+\d+).*/$1.mp4/' *mp4

示例输出

'Another type of ... Class 223 (1080p_30fps_H264-128kbit_AAC).mp4' would be renamed to 'Class 223.mp4'
'Kind of Physician something Class 218 (1080p_30fps_H264-128kbit_AAC).mp4' would be renamed to 'Class 218.mp4'

如果看起来不错,请移除--dry-run,然后再次运行。

请注意,在正则表达式中:

  • .*表示重复任意次的任何字符或数字,

  • /s+表示至少发生一次甚至可能不止一次的任何类型的空间(制表符或空格),

  • /d+表示至少出现一次且可能多次出现的任何数字(0-9),

  • (...)意味着捕获括号内的所有内容,

  • $1表示替换为先前在括号中捕获的第一件事。