Python和perl实现批量对目录下电子书文件重命名的代码分享


Posted in Python onNovember 21, 2014

经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:
例如:

修改前:[三水点靠木]Mac OS X for Unix Geeks[3water.com].mobi
修改后:Mac OS X for Unix Geeks.mobi

python代码如下:

import os

import re
def rename_dir(dir,regex,f):

  if not os.path.isdir(dir) or not os.path.exists(dir) : 

    print("The input is not one directory or not exist.")

  for root,subdirs,files in os.walk(dir):

    for name in files:

      oldname = name          

      newname = re.sub(regex,f,name)

      print("Before : " + os.path.join(root,oldname))

      print("After  :  " + os.path.join(root,newname))

      if not name == newname and not os.path.exists(os.path.join(root,newname)):

        os.rename(os.path.join(root,oldname),os.path.join(root,newname))

    for dir in subdirs:

        rename_dir(os.path.join(root,dir))
rename_dir("C:\\Python31\\test","\[.*\](.*)\[3water.com\](.*)",lambda m:m.group(1)+m.group(2))

用perl写了下,感觉代码也没有少写多少

use strict;

use warnings;

use File::Find;
my $regex = "\\[.*\\](.*)\\[3water.com\\](.*)";

# $replace doesn't work

my $replace = "\$1\$2";
sub wanted {

 my $name = $File::Find::name;

 if( -f $name){

   my $newname =$name;

   $newname =~ s/$regex/$1$2/;

   print "Before: $File::Find::name\n";

   print "After : $newname\n";

   if( !-e $newname) {

     rename($name, $newname);

   }

 }

}
sub rename_dir{

  my ($dir,) = @_;

  if (!-d $dir || !-e $dir){

    print"The input is not directory or not exist.";

  }

  find(\&wanted, $dir);

}

&rename_dir("c:\\perl\\test");

perl 实现2

use strict;

use warnings;
my $regex = "\\[.*\\](.*)\\[3water.com\\](.*)";

# $replace doesn't work

my $replace = "\$1\$2";
sub rename_dir{

    my $dir = shift;

    if (!-d $dir || !-e $dir){

      print"The input is not directory or not exist.";

    }

    opendir(DIR, $dir) || die "Cannot opendir $dir.";

    foreach (readdir(DIR)) {

      if ($_ eq '.' || $_ eq '..') {next;}

      my $name = $dir.'/'.$_;

      if(-d $name){ 

        rename_dir($name);         

        next;

        }

      my $newname =$_;

      $newname =~ s/$regex/$1$2/;

      $newname = $dir.'/'.$newname;

      print "Before : $name\n";

      print "After  : $newname\n";

      rename($name,$newname);

    }

    #closedir(DIR);

}

&rename_dir("c:\\perl\\test");
Python 相关文章推荐
详解Python中find()方法的使用
May 18 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
Python实现按中文排序的方法示例
Apr 25 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
python用插值法绘制平滑曲线
Feb 19 Python
Python中常用的8种字符串操作方法
May 06 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Opencv 图片的OCR识别的实战示例
Mar 02 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 07 Python
Python实现的下载8000首儿歌的代码分享
Nov 21 #Python
Python常用模块介绍
Nov 21 #Python
Python使用py2exe打包程序介绍
Nov 20 #Python
Python实现的tab文件操作类分享
Nov 20 #Python
Python实现的ini文件操作类分享
Nov 20 #Python
Python中列表、字典、元组、集合数据结构整理
Nov 20 #Python
python有证书的加密解密实现方法
Nov 19 #Python
You might like
PHP eval函数使用介绍
2013/12/08 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
jQuery中queue()方法用法实例
2014/12/29 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python实现备份目录的方法
2015/08/03 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
python多进程控制学习小结
2018/10/31 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
语文教育专业推荐信范文
2013/11/25 职场文书
十八大感想感言
2014/02/10 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
党员发展大会主持词
2015/07/03 职场文书
退休欢送会致辞
2015/07/31 职场文书