加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl文件名过滤工具

发布时间:2020-12-15 23:51:49 所属栏目:大数据 来源:网络整理
导读:有时候客户给的文件文件名里面有很多空格,在网页解析的时候会把这些空格变成只保留一个,所以得去掉这些空格。通过重命名是一种方法。这里我是对文件名进行批量过滤。 1 # !/usr/bin/perl -w 2 use strict; 3 use warnings; 4 use File:: Find (); 5 use Fi

有时候客户给的文件文件名里面有很多空格,在网页解析的时候会把这些空格变成只保留一个,所以得去掉这些空格。通过重命名是一种方法。这里我是对文件名进行批量过滤。

 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 wanted 18 { 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$suffixt path:$pathn"
26  } 27  } 28 } 29 
30 sub renamer; 31 sub folderTraverse 32 { 33     my $dir = shift ; 34     #File::Find::find({wanted=>&;renamer},$dir);
35     File::Find::find({wanted=>&;singleFile_renamer},$dir); 36 } 37 sub renamer 38 { 39     my @file_array = split /n/,$name ; 40     my %dir_array ;#为了判断元素是否重复,用hash表 41  #先对文件进行重命名
42     foreach my $file ( @file_array ) 43  { 44         my ($fileName,".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_renamer 65 { 66     my @file_array = split /n/,$name ; 67     foreach my $file ( @file_array ) 68  { 69         my ($fileName,".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 main 85 { 86     my $dir = 'C:UsersAdministratorDesktopproducts' ; 87     folderTraverse($dir); 88 } 89 main();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读