我有兩個目錄具有相同的文件列表。我需要使用diff
命令來比較兩個目錄中的所有文件。是否有一個簡單的命令行選項來完成它,還是必須編寫一個shell腳本來獲取文件列表,然後遍歷它們?差異文件存在於兩個不同的目錄中
回答
您可以使用該diff
命令:
diff -bur folder1/ folder2/
這將輸出一個遞歸DIFF無視空間,用統一的背景:
- b標誌意味着忽略空白
- ü標誌意味着一個統一的環境(3條線之前和之後)
- [R標誌意味着遞歸
diff
不僅可以比較兩個文件,它可以通過使用-r
選項來遍歷整個目錄樹,遞歸地檢查每個樹中可比較點發生的子目錄和文件之間的差異。
$ man diff
...
-r --recursive
Recursively compare any subdirectories found.
...
差異有一個選項-r
這意味着要做到這一點。
diff -r dir1 dir2
如果它是GNU的diff,那麼你就應該能夠在兩個目錄指向它並使用-r選項。
否則,請嘗試使用
for i in $(\ls -d ./dir1/*); do diff ${i} dir2; done
注:正如Dennis在評論部分指出的那樣,你實際上並不需要在ls上進行命令替換。我一直這樣做了很長時間,我幾乎在自動駕駛儀上這樣做,並用我需要的命令來獲取我的文件列表進行比較。
另外我忘了補充說我暫時禁用我的別名ls到GNU ls,這樣我就失去了GNU ls返回的列表中的顏色格式信息。
沒有必要使用'ls':'爲我in。/ dir1/*' – 2010-01-07 12:17:13
@ Dennis,時髦的捷徑。 +1。我很習慣做命令替換,雖然它是自動的,我只是使用我需要的任何命令,例如有時我正在使用find。使用ls也可以讓我玩更多的dir列表,例如反向時間而不是默認順序。 – 2010-01-07 12:49:59
如果你只看到不同的文件感興趣,你可以使用:
diff -qr dir_one dir_two | sort
選擇「Q」將只顯示不同的是不同的文件,而不是內容,和「排序」將按字母順序排列輸出。
太棒了!也有效地工作 - 即,如果整個子目錄僅存在於其中一個目錄中,則其停止重複進入並且僅報告子目錄本身(沒有其後續內容)。非常好!! – SomethingSomething 2015-03-26 09:17:00
'-q'選項man!我愛你。 – Campa 2017-11-23 09:20:35
以下是顯示兩個文件夾中文件差異的腳本。它遞歸地工作。更改dir1和dir2。
(search() { for i in $1/*; do [ -f "$i" ] && (diff "$1/${i##*/}" "$2/${i##*/}" || echo "files: $1/${i##*/} $2/${i##*/}"); [ -d "$i" ] && search "$1/${i##*/}" "$2/${i##*/}"; done }; search "dir1" "dir2")
試試這個:
diff -rq /path/to/folder1 /path/to/folder2
這複製了一個現有的答案,並沒有添加任何新內容。除非你真的有新的東西來貢獻,否則請不要發佈答案。 – 2017-06-06 21:35:09
- 1. 來自兩個不同目錄的兩個文件的差異
- 2. 爲什麼差異顯示這兩個文件存在差異?
- 3. 獲取兩個不同分支中文件的差異
- 4. 比較兩個不同目錄中存在的文件中的數據
- 5. 獲取兩個文件中的差異
- 6. 如何將兩個目錄的差異複製到新目錄?
- 7. 比較同一個文件的兩個不同的目錄
- 8. 用於創建文件/文件夾級補丁(包括二進制文件)的兩個目錄樹的差異
- 9. 當在Windows中的兩個文件上執行差異時,獲取兩個文件中差異的行數
- 10. 差異,兩個錄製
- 11. 使用Makefile將對象文件存儲在兩個不同的目錄中? [C]
- 12. 使用minGW差異顯示兩個文本文件的差異
- 13. 基於文件名的不同位置的差異文件
- 14. Bash腳本獲得兩個目錄中文件的權限差異
- 15. Diffing 2大目錄文件存在差異
- 16. 比較(差異)不同的文件,在很多目錄相同的名稱和子目錄
- 17. 比較兩個文件,並保存在Linux的差異
- 18. 同名的第二個CSS文件存在於不同的目錄中時,不會加載CSS文件
- 19. 比較兩個目錄與每個文件單獨的差異輸出
- 20. 比較不同目錄中的兩個文件的名稱
- 21. 比較兩個excel文件的差異
- 22. 獲取兩個文件的差異
- 23. 檢查兩個不同目錄中的文件名(Unix)
- 24. 從兩個不同的目錄中讀取文件
- 25. 找到兩個XML之間的差異差異在marklogic中的文件
- 26. SVN在已刪除目錄中的文件的日誌/差異
- 27. 獲取兩個不同表格中兩列的差異?
- 28. 查詢比較兩個不同表中兩列的差異
- 29. 比較2個目錄,並顯示每個文件的差異
- 30. WiX源文件與項目文件位於不同目錄中
在Windows中,你用什麼來作出這樣的diff命令? – onmyway133 2013-02-26 10:09:48
您可以通過下載[GNU utilities for Win32](http://unxutils.sourceforge.net/)來訪問'diff'命令。 – 2013-02-26 13:32:08
我也發現--brief選項很有用;你會得到已更改文件的列表,並可以分別處理它們 – Dariusz 2013-04-03 12:44:35