Perl 取文件大小问题
时间:2010-12-17
来源:互联网
本帖最后由 mitmax 于 2010-12-17 08:55 编辑
复制代码
这个是结果
复制代码
我想取一个目录的的大小, 但是我又想实现过滤掉 里面的某些目录 ,和文件 但是这个好像没匹配目录,倒是匹配了文件名 高手帮忙改下Config Logs 是目录 Web.config是文件
还有下面这个为什么一个文件会匹配3次
复制代码
复制代码
- #!/usr/bin/perl -w
- use strict;
- my @Re=`dir /b /s /a-d D:\\Offline`;
- my @FileName=('Logs','Web.config','Config');
- #my $AR=scalar(@FileName);
- #print $AR,"\n";
- my $size=0;;
- foreach (@Re){
- chomp;
-
- foreach my $i (@FileName){
- if ($_ =~ /.*?($i).*?/){
- print "过滤 $_ \n";
- }else{
- $size =$size + -s $_;
- }
- }
-
- }
- print $size,"\n";
这个是结果
- 过滤 D:\Offline\Web.config
- 过滤 D:\Offline\App_Data\Business\ClientConfig.xml
- 过滤 D:\Offline\bin\Microsoft.Practices.Unity.Configuration.dll
- 过滤 D:\Offline\bin\PES.Beehive.Configuration.dll
- 过滤 D:\Offline\bin\PES.Beehive.Configuration.Entity.dll
- 过滤 D:\Offline\bin\PES.Beehive.Configuration.Infrastructure.dll
- 过滤 D:\Offline\Config\Develop\hibernate-initialization.config
- 过滤 D:\Offline\Config\Develop\policyInjection.config
- 过滤 D:\Offline\Config\Develop\syscache.config
- 过滤 D:\Offline\Config\Develop\unity.config
- 过滤 D:\Offline\Config\Environment\appSettings.config
- 过滤 D:\Offline\Config\Environment\hibernate-configuration.config
- 过滤 D:\Offline\Config\Environment\log4net.config
- 2093850
我想取一个目录的的大小, 但是我又想实现过滤掉 里面的某些目录 ,和文件 但是这个好像没匹配目录,倒是匹配了文件名 高手帮忙改下Config Logs 是目录 Web.config是文件
还有下面这个为什么一个文件会匹配3次
- #!/usr/bin/perl -w
- use strict;
- use File::Find;
-
- my $path = 'D:\\Offline';
- my @FileName=('/Logs/','Web.config','/Config/');
- my $size=0;
- sub wanted {
- if ( -f $File::Find::name ) {
- foreach my $i (@FileName){
- if ( $File::Find::name =~ /$i/ ) {
- print "过滤: $File::Find::name\n";
-
- }else{
- print "匹配: $File::Find::name\n";
- $size =$size + -s $File::Find::name;
-
- }
- }
-
- }
-
- }
-
- find( \&wanted, $path );
- print $size;
- 匹配: D:\Offline/Config/Develop/policyInjection.config匹配: D:\Offline/Config/Develop/policyInjection.config过滤: D:\Offline/Config/Develop/policyInjection.config匹配: D:\Offline/Config/Develop/syscache.config匹配: D:\Offline/Config/Develop/syscache.config过滤: D:\Offline/Config/Develop/syscache.config匹配: D:\Offline/Config/Develop/unity.config匹配: D:\Offline/Config/Develop/unity.config过滤: D:\Offline/Config/Develop/unity.config匹配: D:\Offline/Config/Environment/appSettings.config匹配: D:\Offline/Config/Environment/appSettings.config过滤: D:\Offline/Config/Environment/appSettings.config匹配: D:\Offline/Config/Environment/hibernate-configuration.config匹配: D:\Offline/Config/Environment/hibernate-configuration.config过滤: D:\Offline/Config/Environment/hibernate-configuration.config匹配: D:\Offline/Config/Environment/log4net.config匹配: D:\Offline/Config/Environment/log4net.config
作者: mitmax 发布时间: 2010-12-17
因为你的for循环,会执行三次,而找到的每个文件都会和你需要过滤的文件名,因为你需要过滤的有三个关键字,所以匹配三次
作者: scrit 发布时间: 2010-12-17
QUOTE:
因为你的for循环,会执行三次,而找到的每个文件都会和你需要过滤的文件名,因为你需要过滤的有三个关键字, ...
scrit 发表于 2010-12-17 09:32
scrit 发表于 2010-12-17 09:32
my @FileName=('/Logs/','Web.config','/Config/'); 应该是遍历吧,不是一个名字匹配3次吧
作者: mitmax 发布时间: 2010-12-17
回复 mitmax
你是想做遍历的,但是计算机程序认为你那是三个需要比较的变量,所以在for循环了,把找到的每个文件名,与这三个变量比较了三次。不信的话,你可以把那三个字段增加或者减少,你就会发现
你是想做遍历的,但是计算机程序认为你那是三个需要比较的变量,所以在for循环了,把找到的每个文件名,与这三个变量比较了三次。不信的话,你可以把那三个字段增加或者减少,你就会发现
作者: scrit 发布时间: 2010-12-17
QUOTE:
回复 mitmax
你是想做遍历的,但是计算机程序认为你那是三个需要比较的变量,所以在for循环了, ...
scrit 发表于 2010-12-17 10:09
你是想做遍历的,但是计算机程序认为你那是三个需要比较的变量,所以在for循环了, ...
scrit 发表于 2010-12-17 10:09
大哥你能不能再我的代码上帮忙该系
作者: mitmax 发布时间: 2010-12-17
回复 mitmax
我也是才学习perl不久的,这是我写的希望对你有用,你试试
复制代码
我也是才学习perl不久的,这是我写的希望对你有用,你试试
- #!/usr/bin/perl -w
- use strict;
- use File::Find;
-
- my $path = 'D:\\Offline';
- my @FileName=('/Log/','web\.config','/Config/');
- my $size=0;
- my $flag = 0;
- sub wanted {
- if ( -f $File::Find::name )
- {
-
- foreach my $i (@FileName)
- {
- if ( $File::Find::name =~ /$i/ )
- {
- print "过滤: $File::Find::name\n";
- $flag = 0;
- last;
-
- }
- else
- {
- $flag = $flag +1;
- }
- if($flag eq 3 ) # 这里要看数组里有几个变量,就设置为几
- {
- print "匹配: $File::Find::name\n";
- $size =$size + -s $File::Find::name;
- $flag = 0;
- last;
- }
- }
-
- }
-
- }
-
- find( \&wanted, $path );
- print $size;
作者: scrit 发布时间: 2010-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28