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处理json数据中的中文
Mar 06 Python
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
Python3 replace()函数使用方法
Mar 19 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
Python格式化输出字符串方法小结【%与format】
Oct 29 Python
关于Python中定制类的比较运算实例
Dec 19 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
在主流系统之上安装Pygame的方法
May 20 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 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 版本]
2007/03/20 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Python实现FTP文件传输的实例
2019/07/07 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
留学自荐信
2013/10/10 职场文书
结构工程研究生求职信
2013/10/13 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
《白鹅》教学反思
2014/04/13 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
创业计划书之面包店
2019/09/12 职场文书
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS