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涉及到中文的处理方法
Sep 12 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
Django开发的简易留言板案例详解
Dec 04 Python
Python爬虫设置代理IP(图文)
Dec 23 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
python基础入门之普通操作与函数(三)
Jun 13 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 Smarty模板生成html文档的方法
2010/04/12 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
js下弹出窗口的变通
2007/04/18 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
js评分组件使用详解
2017/06/06 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
Python实现文件复制删除
2016/04/19 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
django 微信网页授权登陆的实现
2019/07/30 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
pycharm修改file type方式
2019/11/19 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
python的pip有什么用
2020/06/17 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
招聘专员岗位职责
2014/03/07 职场文书
法人授权委托书
2014/04/03 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
小学新教师个人总结
2015/02/05 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书