給定兩個目錄樹,如何找出哪些文件有所不一樣?

若是我想找到兩個目錄樹之間的差別,我一般只執行: node

diff -r dir1/ dir2/

這準確地輸出了相應文件之間的差別。 我有興趣只獲取內容不一樣的相應文件列表。 我認爲這只是將命令行選項傳遞給diff ,但我在手冊頁上找不到任何內容。 git

有什麼建議? centos


#1樓

我使用的命令是: 服務器

diff -qr dir1/ dir2/

它與馬克的徹底相同:)可是他的回答讓我困擾,由於它使用了不一樣類型的旗幟,它讓我看了兩次。 使用Mark的更詳細的標誌,它將是: 工具

diff  --brief --recursive dir1/ dir2/

當其餘答案徹底能夠接受時,我爲發佈而道歉。 沒法阻止本身...努力減小迂腐。 spa


#2樓

我喜歡使用git diff --no-index dir1/ dir2/ ,由於它能夠顯示顏色的差別(若是你在git配置中設置了該選項),而且由於它顯示了長頁面輸出中的全部差別「減」。 命令行


#3樓

頻道同胞'帳單'(freenode /#centos成名)與我分享他的方法: code

diff -Naur dir1/ dir2

包括最終目錄正斜槓可有可無。 get

此外,彷佛-u選項在某些較舊/服務器版本的diff上不可用。 it

差別的差別:

# diff -Nar /tmp/dir1 /tmp/dir2/
diff -Nar /tmp/dir1/file /tmp/dir2/file
28a29
> TEST

# diff -qr /tmp/dir1/ /tmp/dir2/
Files /tmp/dir1/file and /tmp/dir2/file differ

#4樓

這兩個命令基本上要求的是:

diff --brief --recursive --no-dereference --new-file --no-ignore-file-name-case /dir1 /dir2 > dirdiff_1.txt

rsync --recursive --delete --links --checksum --verbose --dry-run /dir1/ /dir2/ > dirdiff_2.txt

它們之間的選擇取決於dir1和dir2的位置:

當目錄駐留在兩個單獨的驅動器上時,diff優於rsync。 可是當比較的兩個目錄在同一個驅動器上時,rsync會更快。 這是由於diff在兩個目錄上並行放置幾乎相等的負載,從而最大化兩個驅動器的負載。

rsync在實際比較它們以前計算大塊中的校驗和。 它將i / o操做分組爲大塊,並在單個驅動器上進行更有效的處理。


#5樓

Meld也是比較兩個目錄的好工具:

meld dir1/ dir2/

Meld有許多用於比較文件或目錄的選項。 若是兩個文件不一樣,則很容易進入文件比較模式並查看確切的差別。

相關文章
相關標籤/搜索