Perl實(shí)現(xiàn)刪除Windows下的圖片緩存縮略圖Thumbs.db
接手以前別人做的項(xiàng)目,發(fā)現(xiàn)SVN里的ignore里并沒有對*.db處理,導(dǎo)致圖片的緩存縮略文件都被提交了,而我只要打開圖片文件夾,就意味著Thumbs.db發(fā)生了改變。
要做的事情有兩個:
一、更改svn的設(shè)置,以后不再提交Thumbs.db文件
二、批量刪除指定目錄下的Thumbs.db文件
所以用perl寫了一個,代碼是在之前的 perl遍歷目錄 做了一些修改,主要有兩點(diǎn)自己注意了:
一、文件路徑,Windows下默認(rèn)為“\ ”而linux下則是”/”, 所以統(tǒng)一改為”/”
二、比較兩個字符串相等需要使用eq 而不是 == (==返回?cái)?shù)值相等,而eq返回的是字符串相等)
三、unlink刪除文件,需要指定文件的完整路徑
四、perl中的else if 寫法為elsif 沒有那個“e”
五、perl正則匹配方式為 =~ 或 !~
完整的代碼如下,需要更改規(guī)則可以修改代碼中的這一段:
#!/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) {#當(dāng)前路徑是否為一個目錄
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 = "刪除文件的總數(shù):".$count;
print $str;
控制臺上輸出的結(jié)果:
相關(guān)文章
Perl中使用File::Lockfile確保腳本單實(shí)例運(yùn)行
這篇文章主要介紹了Perl中使用File::Lockfile確保腳本單實(shí)例運(yùn)行的方法,本文直接給出實(shí)例,方法非常簡單,需要的朋友可以參考下2014-11-11perl用grep map求交集、并集、補(bǔ)集的實(shí)例代碼
perl 用grep map求交集、并集、補(bǔ)集的例子,有需要的朋友可以參考下2013-02-02perl操作MongoDB報(bào)錯undefined symbol: HeUTF8解決方法
這篇文章主要介紹了perl操作MongoDB報(bào)錯undefined symbol: HeUTF8解決方法,需要的朋友可以參考下2014-10-10