perl清理電腦上重複的檔案

2022-02-25 14:58:08 字數 1454 閱讀 5089

苦於電腦上的東西太多(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";

print

$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');

print

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 該方法可以實現,但是你需...