0
我有一個包含所有文件(C文件)的路徑的數組。如果文件具有相同的校驗和,則將文件設置爲零
我使用Perl
@array
C:\temp\a.c
C:\temp\b.c
C:\temp\x.c
C:\temp\y.c
C:\temp\z.c
幾個文件,雖然有不同的文件名可能具有相同的校驗和(這意味着它們具有相同的內容)。這些只能成對存在。我必須讓他們中的一個的大小爲0
CODE
use File::Checksum;
my %array;
foreach my $k(@files3)
{
$array{$k} = Checksum($k, 100);
}
# have to check if they have same checksum and make those file to size 0
#making file size to 0 is easy.
#I just have to open file in write mode and then close it.
需要幫助如何比較所有文件的校驗和的數組,並獲取文件名對於那些有相同的校驗
您可以使用內置的'truncate',但你不應該僅僅依靠校驗和。在截斷它們之前,您應該確保通過比較兩個文件的實際內容與相同的校驗和。 – ikegami
我會檢查文件名和它的校驗和的大小,如果兩者匹配,它們是相同的,也要確保你的校驗和適合大文件,所以我寧願使用SHA512而不是其他任何東西......順便說一句:你可以做你需要使用'sha512sum文件'更容易,並使用輸出作爲查找匹配的比較 – nrathaus
正如所提到的File :: Checksum,使用'checksum'算法,並且對類似文件非常敏感,我將使用SHA512而不是校驗和爲您的任務 – nrathaus