使用regex搜索/替换语义重命名文件

nametrans的Python项目详细描述


https://badge.fury.io/py/nametrans.pnghttps://travis-ci.org/numerodix/nametrans.png?branch=masterhttps://pypip.in/wheel/nametrans/badge.pnghttps://pypip.in/license/nametrans/badge.png

python版本支持:cpython 2.6、2.7、3.2、3.3、3.4和pypypy。

安装

$ pip install nametrans
$ nametrans

用法

简单替换

最简单的用法就是直接搜索和替换。中的所有文件 将尝试查看当前目录是否与搜索字符串匹配。

$ nametrans.py "apple""orange"
* I like apple.jpg    -> I like orange.jpg
* pineapple.jpg       -> pineorange.jpg
* The best apples.jpg -> The best oranges.jpg
Rename 3 files? [y/N]

忽略大小写

匹配不同大小写的字符串很容易。

$ nametrans.py -i "pine""wood"
* pineapple.jpg -> woodapple.jpg
* Pinetree.jpg  -> woodtree.jpg
Rename 3 files? [y/N]

文字

搜索字符串实际上是一个正则表达式。如果你使用的字符 在正则表达式中有特殊含义,然后设置literal选项并 它将进行标准的搜索和替换。(如果你不知道 表达式是,只要始终使用此选项,就可以了。)

$ nametrans.py --lit "(1)""1"
* funny picture (1).jpg -> funny picture 1.jpg
Rename 1 files? [y/N]

如果你喜欢“oranje”而不是“orange”,你可以用g来代替 如果是J,这也会匹配扩展名“.jpg”。所以在这种情况下 这将root选项设置为只考虑 匹配。

$ nametrans.py --root "g""j"
* I like orange.jpg    -> I like oranje.jpg
* pineorange.jpg       -> pineoranje.jpg
* The best oranges.jpg -> The best oranjes.jpg
Rename 3 files? [y/N]

卫生用途

除了转换的特定情况外,还有一些常规选项 要保持文件名的一致性,可以应用于许多 情节。

整洁

neat选项试图通过大写单词和 删除通常是噪声的字符。它也有一些简单的理智 检查,例如删除名称末尾的空格或下划线。

$ nametrans.py --neat
* _funny___picture_(1).jpg -> Funny - Picture (1).jpg
* i like apple.jpg         -> I Like Apple.jpg
* i like peach.jpg         -> I Like Peach.jpg
* pineapple.jpg            -> Pineapple.jpg
* the best apples.jpg      -> The Best Apples.jpg
Rename 5 files? [y/N]

如果你喜欢小写,这里是你的选择。

$ nametrans.py --lower
* Funny - Picture (1).jpg -> funny - picture (1).jpg
* I Like Apple.jpg        -> i like apple.jpg
* I Like Peach.JPG        -> i like peach.jpg
* Pineapple.jpg           -> pineapple.jpg
* The Best Apples.jpg     -> the best apples.jpg
Rename 5 files? [y/N]

如果你想得到整洁然后小写的结果,只需将它们都设置好。(如果你 像下划线而不是空格一样,也可以设置--under

非扁平用途

假设文件的命名是一致的,您可以将它们分别放入 通过将某些字符更改为路径分隔符来创建目录。

注意:在windows上,路径分隔符是\,您可能需要编写它 作为\\\\

$ nametrans.py " - ""/"
* france - nice - seaside.jpg -> france/nice/seaside.jpg
* italy - rome.jpg            -> italy/rome.jpg
Rename 2 files? [y/N]

相反的操作是flatten整个目录树,以便 文件放在当前目录中。将删除空目录。

$ nametrans.py --flatten
* france/nice/seaside.jpg -> france - nice - seaside.jpg
* italy/rome.jpg          -> italy - rome.jpg
Rename 2 files? [y/N]

通常,recursive选项将获取递归找到的所有文件并使 它们可以替代。它可以与其他选项结合使用 同样的事情递归地发生在一个目录中。

$ nametrans.py -r --neat
* france/nice/seaside.jpg -> France/Nice/Seaside.jpg
* italy/rome.jpg          -> Italy/Rome.jpg
Rename 2 files? [y/N]

在递归模式下,将对整个路径进行匹配。你可以确保 匹配只发生在路径的文件部分,--files或 带有--dirs的目录部分。

特殊用途

目录名

有时文件名没有任何有用的信息,只是用来维护它们 按照特定的顺序。典型的例子是你相机里的照片 无意义的序列名,通常在序列中有间隔 删除了一些结果不好的照片。在这种情况下,你可能想 只需使用目录名按顺序重命名所有文件。

$ nametrans.py -r --dirname
* rome/DSC00001.jpg -> rome/rome 1.jpg
* rome/DSC00007.jpg -> rome/rome 2.jpg
* rome/DSC00037.jpg -> rome/rome 3.jpg
* rome/DSC00039.jpg -> rome/rome 4.jpg
Rename 4 files? [y/N]

按顺序重命名

仍然是在顺序名方面,有时数字要么太少 要正确排序的前导零或过多不必要的零。带着这个 选项可以指定需要多少前导零(如果不指定 有多少,它会自己发现的)。

$ nametrans.py -r --renseq 1:3
* rome/1.jpg   -> rome/001.jpg
* rome/7.jpg   -> rome/007.jpg
* rome/14.jpg  -> rome/014.jpg
* rome/18.jpg  -> rome/018.jpg
* rome/123.jpg -> rome/123.jpg
Rename 5 files? [y/N]

这里所需的参数意味着field:width,因此名称如下:

series14_angle3_shot045.jpg

数字045可以用3:2缩短为45(第三个字段来自 开头)或-1:2(结尾的第一个字段)。

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

推荐PyPI第三方库


热门话题
java无法访问远程pentaho biserver   带有级联类型的OneToMany上的java Hibernate TransientObject异常。如果我们在保存之前调用迭代器()就可以了   java如果用户输入的“数字”超过了用于解释该数字的内存大小,那么正确的测试方法是什么?   java错误400错误请求JqGrid   java如何防止修改类中的私有字段?   java从一个Bean创建两个JPA表?   在Java中生成一个在JVM关闭后仍能生存的进程   java将字符反向复制到字符数组   使用opencv的java人脸检测不起作用   java差异代码覆盖率   robohelp如何使用Java链接Robo帮助中的URL?   java解码自定义加密文件   设计模式:减少java中几乎相同的两种方法的重复代码   java如何在数组中查找最大整数?   java Mockito spy:尝试在spy类方法中使用doReturn,但使用的是原始方法   java JButton在JTable中选择行时不重新启用   java当我尝试git推heroku时,我得到一个错误   java为什么组织。阿帕奇。薛西斯。解析器。SAXParser在utf8编码的xml中不跳过BOM?   selenium Java。jar文件大小