diff 不會遞歸地工作

diff 不會遞歸地工作

我正在嘗試使用命令列diffutil 遞歸地比較兩個目錄。我有兩個資料夾diff1diff2,其內容如下:

在此輸入影像描述

diff2是空的。但當我這樣做時,diff -r diff1 diff2我只會得到

$ diff -r diff1 diff2
Only in diff1: folder
Only in diff1: test.html

這很令人煩惱。我需要做什麼才能diff遞歸工作?我已經嘗試過--recursive,但這沒有幫助。我在 El Capitan 上,adiff -v抓住了我diff (GNU diffutils) 2.8.1

答案1

您所經歷的行為是設計使然的。我不認為你能得到你想要的,除非你允許使用diff.從你的評論來看:

當我閱讀“遞歸”時,我認為該過程不會在第一級停止。

它不會因為第一層而停止。注意遞歸的含義:

使用函數從自己的程式碼中呼叫自己

(來源:這裡;強調我的)

foo假設您在 和 中diff1都有一個公共子目錄diff2。遞歸意味著您的原始命令diff -r diff1 diff2在某個時刻調用

diff -r diff1/foo diff2/foo

好的,實際上,這很可能是透過在單一進程中呼叫自身的子程式來完成的(但我猜實際呼叫diff可執行檔的實作是可能的)。從邏輯上來說還是這樣。

你有diff1/folder但沒有diff2/folder。你如何打電話diff來比較這些?換句話說,應該<unknown_name>是什麼,以便您從下面的表格中獲得所需的輸出?

diff -r diff1/folder diff2/<unknown_name>

沒有<unknown_name>合適的。遞歸diff不能下降到folder而不變成遞歸ls或之類的東西find。遞歸lsfind不是它的工作。

在您從中學習之後,您仍然可以diff1/folder使用ls -Ror進行查詢find(預設遞歸)。diffOnly in diff1: folder

相關內容