perl文件名过滤工具
来源:互联网 发布:c语言头文件 stdio.h 编辑:程序博客网 时间:2024/06/09 23:20
有时候客户给的文件文件名里面有很多空格,在网页解析的时候会把这些空格变成只保留一个,所以得去掉这些空格。通过重命名是一种方法。这里我是对文件名进行批量过滤。
1 #!/usr/bin/perl -w 2 use strict; 3 use warnings; 4 use File::Find (); 5 use File::Basename ; 6 7 #文件名过滤工具(批量改文件名,去掉文件名中的全部/或多余空格) 8 #暂不支持目录重命名 9 use vars qw/*name *dir *prune/ ;10 *name = *File::Find::name ;11 *dir = *File::Find::dir ;12 *prune = *File::Find::prune ;13 14 our $space = 0 ; #默认留1个空格,$space = 0 时去除所有空格15 16 #回调函数17 sub wanted18 {19 if( /\.jpg/s )20 {21 my @file_array = split /\n/, $name ;22 foreach my $file ( @file_array )23 {24 my ($nameName,$path,$suffix) = fileparse($file,".jpg");25 print "name:$nameName$suffix\t path:$path\n"26 }27 }28 }29 30 sub renamer;31 sub folderTraverse32 {33 my $dir = shift ; 34 #File::Find::find({wanted=>\&renamer},$dir);35 File::Find::find({wanted=>\&singleFile_renamer},$dir);36 }37 sub renamer38 {39 my @file_array = split /\n/, $name ;40 my %dir_array ;#为了判断元素是否重复,用hash表41 #先对文件进行重命名42 foreach my $file ( @file_array )43 {44 my ($fileName,$path,$suffix) = fileparse($file,".jpg");45 46 $dir_array{$path} = 1 if(!exists( $dir_array{$path} )) ;47 48 my $newFile = $fileName ;49 ( $space ) ? ( $newFile =~ s#\s{2,}# #g ) : ( $newFile =~ s#\s{2,}##g ) ;50 if( -e $newFile ){}51 else{52 if( rename $file => $newFile ){}53 else{warn "rename $file error!";}54 }55 }56 #再对目录进行重命名 !!!!!!!这涉及到一个递归的问题!如果上一级目录先重名于下一级,这样就没法找到下一级目录!57 foreach my $dir ( %dir_array )58 {59 my $newDir = $dir =~ s#\s{2,}# #gr ;60 rename $dir => $newDir ;61 }62 }63 64 sub singleFile_renamer65 {66 my @file_array = split /\n/, $name ;67 foreach my $file ( @file_array )68 {69 my ($fileName,$path,$suffix) = fileparse($file,".jpg");70 71 my $newFile = $fileName ;72 ( $space ) ? ( $newFile =~ s#\s{2,}# #g ) : ( $newFile =~ s#\s+##g ) ;73 if( -e $path.$newFile.$suffix ){}74 else{75 if( rename $file => $path.$newFile.$suffix ){76 print "替换文件:$fileName 为 $newFile \n";77 }78 else{warn "rename $file error!";}79 }80 }81 }82 83 84 sub main85 {86 my $dir = 'C:\Users\Administrator\Desktop\products' ;87 folderTraverse($dir);88 }89 main();
- perl文件名过滤工具
- 文件名过滤
- CFileDialog过滤文件名
- Java实现文件名过滤
- 过滤文件名非法字符
- File--文件名过滤算法
- Perl:过滤注释
- 过滤文件名中的非法字符
- perl glob 过滤文件列表
- Perl如何过滤html标签
- 批量修改文件名工具
- Perl 获取当前目录下所有文件名
- perl调试工具
- perl开发工具大全
- perl 代码整理工具
- MapReduce中文件名通配与过滤
- perl过滤掉字符串结束符
- mysqlfilter--数据过滤工具
- Perl深拷贝
- perl传递数组的问题
- Git diff hash顺序的问题
- Ojective C入门
- IOS写文件
- perl文件名过滤工具
- 推荐引擎基本原理
- Perl分割字符串的一个精妙的写法
- objective-c目录递归
- iOS 中正则表达式的使用
- objective-c与js交换数据
- perl命令行批量修改文件内容
- perl xml dom中文乱码问题解决
- 在ipad上网页的一些优化代码