![需要帮助使用包含特定字符串的命令行批量重命名文件](https://linux22.com/image/841817/%E9%9C%80%E8%A6%81%E5%B8%AE%E5%8A%A9%E4%BD%BF%E7%94%A8%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.png)
我有大约 200 个文件,其命名如下:
01_-_Back_Alley_Uproar.avi
01_-_Bad_Luck_Cat.avi
01_-_Beep_Beep.avi
02_-_Broomstick_Bunny.avi
02_-_Bunker_Hill.avi
等等。我想将它们全部重命名为如下所示:
Back Alley Uproar.avi
Bad Luck Cat.avi
Beep Beep.avi
Broomstick Bunny
Bunker Hill
等等...
我需要使用命令行,因为我从 Windows 机器通过 winSCP 通过 ssh 连接,才能到达包含这些文件的 ubuntu 服务器。提前致谢。
答案1
您可以使用该rename
命令以及适当的正则表达式,例如
s/^\d+_-_//
对于“用下划线连字符下划线替换初始数字序列”;以及
s/_/ /g
用空格代替下划线。所以
rename -nv 's/^\d+_-_//;s/_/ /g' *.avi
使其-n
在测试(空运行)模式下运行 - 在您的目录中对其进行测试,如果您对它所做的正确性感到满意,请在没有n
答案2
您可以使用以下命令:
rename 's/[0-9]+_-_//; s/_/\ /g' *