Perl實現刪除Windows下的圖片緩衝縮圖Thumbs.db_perl

來源:互聯網
上載者:User

接手以前別人做的項目,發現SVN裡的ignore裡並沒有對*.db處理,導致圖片的緩衝縮減檔案都被提交了,而我只要開啟圖片檔案夾,就意味著Thumbs.db發生了改變。

要做的事情有兩個:

一、更改svn的設定,以後不再提交Thumbs.db檔案

二、大量刪除指定目錄下的Thumbs.db檔案

所以用perl寫了一個,代碼是在之前的 perl遍曆目錄 做了一些修改,主要有兩點自己注意了:

一、檔案路徑,Windows下預設為“\  ”而linux下則是”/”, 所以統一改為”/”

二、比較兩個字串相等需要使用eq 而不是 == (==返回數值相等,而eq返回的是字串相等)

三、unlink刪除檔案,需要指定檔案的完整路徑

四、perl中的else if 寫法為elsif 沒有那個“e”

五、perl正則匹配方式為 =~ 或 !~

完整的代碼如下,需要更改規則可以修改代碼中的這一段:

複製代碼 代碼如下:

#!/usr/bin/perl
use strict;
use warnings;
 
my $path = "C:/FlexApp/xx";
my $filecount = 0;
 
sub parse_env {
     my $path = $_[0]; #或者使用 my($path) = @_; @_類似javascript中的arguments
     my $subpath;
     my $handle;
 
     if (-d $path) {#當前路徑是否為一個目錄
         if (opendir($handle, $path)) {
             while ($subpath = readdir($handle)) {
                 if (!($subpath =~ m/^\.$/) and !($subpath =~ m/^(\.\.)$/)) {
                     my $p = $path."/$subpath";
 
                     if (-d $p) {
                         parse_env($p);
                     } elsif ($subpath eq "Thumbs.db") {
                         ++$filecount;
                            print "The file path:".$p."------------The file name:$subpath\n";
                         unlink($p) or warn "failed on $subpath:$!";
                     }
                 }
             }
             closedir($handle);
         }
     }
 
     return $filecount;
}
 
my $count = parse_env $path;
my $str = "刪除檔案的總數:".$count;
 
print $str;

控制台上輸出的結果:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.