我正在寻找一种方法来清理媒体文件夹中的命名约定。
例如重命名
The Thing (1982)
|_ The Thing (1982).mkv
到:
Thing, The (1982)
|_ Thing, The (1982).mkv
我发现很多消息和脚本可以根据模式或文件夹名称重命名,但没有这么基本和具体的东西。
基本上,Plex 可以正确地对“The”电影和节目进行排序,但 Emby 会根据文件/文件夹命名格式对节目和电影进行排序。因此,我想纠正我的命名约定。
有人可以帮忙吗?
答案1
查看 FileBothttps://www.filebot.net/forums/viewtopic.php?f=7&t=3709&p=32848#p32848或者https://www.filebot.net/或 Ubuntu 软件商店。它提供了一种批量重命名视频文件的好方法。
答案2
解决 Perl 问题的唯一方法rename
:
rename -n 's/The ([^(]*) /$1, The /'
这会将不带前导“The”的名称保存为组 1,并将名称的这一部分替换为组 1 后跟“,The”。由于您想要重命名目录及其中的文件,因此您需要分两步进行重命名,首先是目录,然后是文件。使用此-n
选项,rename
只需打印要重命名的文件的名称而无需实际执行 - 这对于测试非常有用。
示例运行
$ tree -A --noreport
.
└── The\ Thing\ (1982)
└── The\ Thing\ (1982).mkv
$ rename -n 's/The ([^(]*) /$1, The /' */ # */ matches every directory
rename(The Thing (1982)/, Thing, The (1982)/) # old and new name appear in the brackets, separated by comma
$ rename 's/The ([^(]*) /$1, The /' */ # let's go!
$ tree -A --noreport # dirs are done, now to the files!
.
└── Thing,\ The\ (1982)
└── The\ Thing\ (1982).mkv
$ rename -n 's/The ([^(]*) /$1, The /' */* # */* matches every file in a subdirectory
rename(Thing, The (1982)/The Thing (1982).mkv, Thing, The (1982)/Thing, The (1982).mkv)
$ rename 's/The ([^(]*) /$1, The /' */*
$ tree -A --noreport
.
└── Thing,\ The\ (1982)
└── Thing,\ The\ (1982).mkv
当然,您可以省略这-n
一步,但谨慎一点总是好的。