Command-Line

如何將大文件與進度資訊進行比較

  • April 20, 2022

在 Unix 命令行上下文中,我想比較兩個真正巨大的文件(每個大約 1TB),最好使用進度指示器。

我試過diffand cmp,它們都使系統崩潰(macOS Mojave),更不用說給我一個進度條了。

比較這些非常大的文件的最佳方法是什麼?

額外細節:

  1. 我只想檢查它們是否相同。
  2. cmp以系統確實自行重新啟動的方式使系統崩潰。:-( 也許系統記憶體不足?

您可以將pv其用作進度指示器,並將其傳遞給shasum函式以檢查雜湊值是否相同。

pv file1 | shasum
1.08MiB 0:00:00 [57.5MiB/s] [====================================>] 100%            
303462e848ecbec5f8ab12718fa6239713eda1c6  -

pv file2 | shasum
1.08MiB 0:00:00 [57.5MiB/s] [====================================>] 100%            
303462e848ecbec5f8ab12718fa6239713eda1c6  -

如果您想獲取有關它們相同或不同的事實的資訊,則一種可能的方法是使用雜湊。像這樣的命令會給你sha1文件的雜湊值:

shasum file1 file2

預期的結果是這樣的:

ddfdb3a7fc6fc7ca714c9e2930fa685136e90448 file1
ddfdb3a7fc6fc7ca714c9e2930fa685136e90448 file2

引用自:https://unix.stackexchange.com/questions/699635