使用regex搜索/替换语义重命名文件
nametrans的Python项目详细描述
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(结尾的第一个字段)。