2017-05-24 55 views
1

這是我的樹使用差異而忽略空目錄

├── test 
│   ├── dir1 
│   └── dir2 
│    ├── file 
│    └── file2 
└── test2 
    └── dir2 
     ├── file 
     └── file2 

我用diffdiff -r test/ test2/

Only in test: dir1 

所以,唯一的區別是,有在test/空目錄(dir1)這在test2/中不存在。

我想忽略空目錄作爲區別。所以我想在這種情況下,差異告訴我,test/的內容是相同的內容test2/

我該如何做到這一點?

回答

1

我發現了一種方法,但我並不滿意。

diff可以被告知排除匹配模式的文件。令人遺憾的是,該模式只適用於文件名,所以我的解決方案可能會排除更多的目錄(和文件)比預期

這,FWIW:

diff $(find test -empty -type d -exec sh -c 'echo -n "-x $(basename $1) "' _ {} \;) -r test/ test2/ 

添加以下命令

find test -empty -type d -exec sh -c 'echo -n "-x $(basename $1) "' _ {} \;) 

,輸出由diff的前述每空目錄的基本名稱排除選項-x。用您的示例樹,它會輸出:-x dir1