重命名文件以删除带括号的字符串

重命名文件以删除带括号的字符串

我有一个文件集合,其名称如下:

Ace of Aces (Europe).mp4
Action Fighter (USA, Europe) (v1.2).mp4
Addams Family, The (Europe).mp4
Aerial Assault (USA).mp4
After Burner (World).mp4
Air Rescue (Europe).mp4
Aladdin (Europe).mp4
Alex Kidd - High-Tech World (USA, Europe).mp4
Alex Kidd in Miracle World (USA, Europe) (v1.1).mp4
Alex Kidd in Shinobi World (USA, Europe).mp4
Alex Kidd - The Lost Stars (World).mp4
Alf (USA).mp4
Alien 3 (Europe).mp4
Alien Storm (Europe).mp4
Alien Syndrome (USA, Europe).mp4
Altered Beast (USA, Europe).mp4
American Baseball (Europe).mp4
American Pro Football (Europe).mp4
Andre Agassi Tennis (Europe).mp4
Arcade Smash Hits (Europe).mp4
Assault City (Europe) (Light Phaser).mp4

(我在文本文件中列出了这些文件名。) 

我必须摆脱括号,所以我想重命名文件以删除括号和它们之间的文本,因此文件名如下:

Ace of Aces.mp4
Action Fighter.mp4
Addams Family, The.mp4
Aerial Assaul.mp4
After Burner.mp4
Air Rescue.mp4
Aladdi.mp4
Alex Kidd - High-Tech World.mp4
Alex Kidd in Miracle World.mp4
Alex Kidd in Shinobi World.mp4
Alex Kidd - The Lost Stars.mp4
Alf.mp4
Alien 3.mp4
Alien Storm.mp4
Alien Syndrome.mp4
Altered Beast.mp4
American Baseball.mp4
American Pro Footbal.mp4
Andre Agassi Tennis.mp4
Arcade Smash Hits.mp4
Assault City.mp4

理想情况下,如果我有诸如 Aladdin (Europe).mp4and Aladdin (Asia).mp4、或Ghostbusters (1984).mp4and之类的文件,任何解决方案都应该提醒我Ghostbusters (2016).mp4,并且不破坏任何文件。

答案1

使用Perl 的rename命令行:

用这个 :

rename 's/\s*\([^\)]+\)//g' *.mp4

当输出看起来令人满意时删除-n(又名)。dry-run

答案2

使用zsh, (还检查冲突):

autoload zmv # best in ~/.zshrc
zmv -n '*' '${f//[[:space:]]#[(]*[)]}'

高兴时删除-n或更换。-v

有了//,我们移除全部的出现次数(...),但由于 *贪婪的,无论如何最多只会有一场比赛。上1 (2) 3 (4),它会匹配" (2) 3 (4)"。您可以*使用S参数扩展标志来使非贪婪:

zmv -n '*' '${(S)f//[[:space:]]#[(]*[)]}'

或者替换*[^)]#(0个或多个非)-s)。

相关内容