苦於電腦上的東西太多(300多g的空間,還有行動硬碟,電腦和硬碟上的東西很多重複了),一直想清理一下,這種活技術含量不高,體力係數卻高得驚人,肯定不能人去幹了,得想程式設計。
用.net吧,不夠我折騰的,有點小題大作了。
以前用perl搜尋檔案的程式,很快很好很簡潔,就選他了,不過不小心還是走了點彎路。
開始的構思,就先把所有的遍歷出來,再對這個東西進行挨個比對:
先遍歷:
$dw->
onfile(
sub;
return
file
::dirwalk
::success;});
$dw->
walk(
'd:/old/perl');
再在嘗試迴圈比對一下,如果只有兩個重複檔案的話,好說一點,但如果出現多個重複檔案,就可能要用標記或者多次推出列表了,想著更麻煩了。
my$cmp_sub
=sub
cmp $_[
1]};#先排序
my@newfiles
=sort
@files
;while
(@newfiles).
"\n";
$newfiles
[$idx].
"\n";
}print"\n
";}更麻煩了,總是有種感覺這個問題用perl的資料結構應該是很好解決的,我肯定走岔了。靈光一閃,用hash不是乙個就搞定了嗎,用filename作key,用乙個路徑陣列用value,不就行了嗎:)如下:
my%files
; $dw
->
onfile(
sub->},
$file;#
paths這裡是乙個路徑陣列,看見路徑就往裡塞,自動塞到同乙個檔名下的路徑列表中去.
return
file
::dirwalk
::success;});
my$htrace
;open
$htrace,'
> trace.txt';
select
$htrace
;$dw
->
walk(
'd:/old/perl');
dumper(
\%files
);close
$htrace
;ok, 搞定,所有的活就在那一句push,全搞定。
最終出來的hash資料體如下:乙個檔案在**出現多次一止了然,剩下的工作就很好說了:)
說perl是巫師,真沒說錯!!!
$var1=,
'rand.pl
'=>,'
get all ats core faults.pl
'=>
,
Perl去除檔案的重複行
perl去除檔案重複行的指令碼輸入檔案 perl去除檔案重複行的指令碼 usr bin perl use warnings use strict my hash my source file read.log 讀取檔案 my katex parse error expected eof got at...
重複檔案清理查詢
duplicateviewer mac版是一款可以在蘋果電腦mac os平台上使用的重複檔案查詢工具,duplicateviewer mac版能夠幫你快速找出磁碟中有哪些檔案是重複的,還可以幫你找出哪些檔案占用了大量的磁碟空間,你可以將這些重複的 大體積的檔案進行刪除以節省磁碟空間。拖動或新增要掃瞄...
perl刪除檔案中的重複行
perl刪除檔案中的重複行 2011 09 28 19 59 57 分類 python ruby 如果有乙個檔案data有10g大,但是有好多行都是重複的,需要將該檔案中重複的行合併為一行,那麼我們需要用什麼辦法來實現 cat data sort uniq new data 該方法可以實現,但是你需...