重命名文件的强大脚本。更好,更强,更快。
prn的Python项目详细描述
重命名大量文件的工具,如MP3或图像。 最近移植到python 3.6+,从古代的未触及的2.0时代源代码完成 用愚蠢的名字。
背景:
此工具按字符串修改操作在 命令行, 对于选定的每个文件名。 这样做是为了使结果与预期一致。 如果修改以不幸的方式交互, 它们可能会重新排序以适应需要。 这是一个设计目标。
因此,当对muge个文件执行许多操作时,它 可能不是瞬间的, 由于循环遍历每个文件的参数列表效率低下。 在这种情况下,每次运行可以运行更少的操作,或者更改文件的子集 一次。 由于许多文件系统对单个文件夹中的大量文件不满意, 到目前为止,在实践中还没有发现这是一个问题。
示例
快速开始在某些MP3上将下划线替换为空格:
⏵ prn --replace _ ' ' *.mp3
别担心这会预览结果,在确认之前不会做任何事情, 如下所示。 请随意尝试,当然有帮助:
⏵ prn -h # or --help
注意:–以下示例中的长形选项只有一个字母 缩写别名,通常是长格式的第一个字母,例如: --replace变成-r。
而且,prn的所有选项都可以多次传递, 允许在单个调用中执行更多操作,并启用复杂场景。
文件选择
有几种方法可以选择要重命名的文件。
如上图所示, 一个人可以从包含其他文件的文件夹中选择多个文件, 只要把它们放到命令行, 带或不带外壳通配符扩展:foo.bar *.mp3
在有大量文件的文件夹中, 可以使用--match 'GLOB'绕过命令行限制,如下所示:
⏵ prn --match '*.mp3' # OP1 OP2…
由于可能需要排除某些收集的文件,因此可以使用筛选器:
⏵ prn --filter 'Rick Astley*' # OP1 OP2…
可以多次传递match和filter以添加到选择中。
“您可以免去司令官的寒暄……”
另外,如果当前文件夹中没有无关文件, 选择标准可以省略。 将使用当前文件夹中所有文件的列表。
⏵ prn --replace _ ' ' # all files in current folder selected
递归模式
这将在当前文件夹中和下面找到文件。
在递归模式下,请注意当前文件夹没有重命名。也一样 出现了很多问题, 因此,要重命名文件夹,必须从每个父文件夹重命名。
# all mp3s at or below this folder: ⏵ prn -R --match '*.mp3' --replace _ ' '
注意,glob方法奇怪地需要在您想要的文件夹之前使用'**/'。 去散步。 当传递相对路径以进行匹配时,power重命名器会为您处理该问题。 当绝对路径通过时,你必须自己处理它。
正则表达式替换
当文件名之间要替换的内容稍有不同时,请使用正则表达式:
⏵ prn --re-sub '\s+' ' ' # collapse whitespace to a single space
现在有两个问题,wink。
填充帧编号
这个选项相对不灵活,但我需要做的一件事是:⏵ prn --zfill 4 *.tif foo.3.tif │ foo.0003.tif foo.4.tif │ foo.0004.tif
也许更通用的pad函数可能有用。
交换文本技巧
上面的zfill操作, 例如,如果在所需组之前有数字,则可能有问题:
⏵ prn -z 4 *.tif foo1.3.tif │ foo0001.3.tif # Oops foo1.4.tif │ foo0001.4.tif
DOH,解决这个问题的一种方法是 要通过替换来隐藏问题部分, 然后将其返回到原始形式:
⏵ prn -r foo1 _ -z 4 -r _ foo1 *.tif # replace, pad, return foo1.3.tif │ foo1.0003.tif foo1.4.tif │ foo1.0004.tif
这是因为操作参数是按从左到右的顺序处理的。 “@”是另一个临时使用的好字符。
操作
还有许多有用的字符串操作:
- -c--capitalize
- -l--lower--lower-ext
- -u--upper
- -s--strip
- --insert # STR --append STR --prepend STR
有关详细信息,请参见-h。
细化
在这一点上, 您可能会更新命令行几次, 直到事情符合你的喜好, 在文件选择和输出文件名方面。
在shell中按向上箭头通常会使最后一个命令行返回 编辑, 然后按回车键查看结果很简单 很重要。
提交更改
一旦对变化感到满意, 用-e或--execute完成它们,就像这样:
⏵ prn --OP1 --OP2… -e
whoomp!就在这里。
PRN不会将文件重命名为已经存在的目的地, 他们会很早通知你的。