我有数千个非常旧的视频文件,其中有各种类型的括号,没有特定的顺序。我试图“清理”它们,即重命名这些文件,以便消除其中的所有括号和字符串,有效地替换为空字符串。一个例子是这样的
{xyz}<abc>actual_title[prev_suffix](suffix)some_other_text.mp4
括号使用正确,即不存在像 {xyz<}abc> 这样的文件名,尽管它们可以是嵌套的括号。没有完全用括号命名的文件;总有一个部分是没有括号的。也有可能,一旦删除所有括号,两个文件将具有完全相同的名称,在这种情况下,我并不真正关心它们如何区分。
我想要的结果是
actual_titlesome_other_text.mp4
天真地,通过对文件名进行多次传递,每个括号对一次传递,这很容易做到,但是是否可以更快地做到这一点,可能通过构造正则表达式?
答案1
使用珀尔的rename
:
rename -n 's/\{[^\}]+\}//g;s/<[^<]+>//g;s/\[[^\]]+\]//g;s/\([^\)]+\)//g' ./*actual*
当输出看起来令人满意时删除-n
(又名)。dry-run