重命名文件的强大脚本。更好,更强,更快。

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不会将文件重命名为已经存在的目的地, 他们会很早通知你的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java操作数组上的字符串   java JAXB内容未实例化   图形在Java中如何绘制垂直居中的字符串?   java Apache Ant:使用Junit时出现NoClassDefFoundError   java无法从服务器上运行perl脚本   如何在java中沿树进行预排序遍历,并打印0和1以对应每个节点上的特定字符?   java如何创建。p12文件?   java线程访问无效   java只匹配命名空间中的XML节点,而不知道NS前缀   从java获取2d arraylist元素   数组Java动态集合对象   java Xpath通过通配符或布尔运算查找以相同名称开头的节点?   java注释元素类型   java在中看不到Super()。反编译后的类文件