这是我的树
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dir1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dir2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file2\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test2\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dir2\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file2\nRun Code Online (Sandbox Code Playgroud)\n\n我用diff:diff -r test/ test2/
Only in test: dir1\nRun Code Online (Sandbox Code Playgroud)\n\n所以唯一的区别是有一个空目录( dir1) in 其中test/不存在于test2/。
我想忽略空目录作为差异。所以我想在这种情况下 diff 告诉我 的内容与test/的内容相同test2/
我怎样才能实现这个目标?
\n我找到了一种方法,但我对此并不满意。
diff可以被告知排除与模式匹配的文件。遗憾的是,该模式仅适用于文件名,因此我的解决方案可能会排除比预期更多的目录(以及文件)。
在这里,fwiw:
diff $(find test -empty -type d -exec sh -c 'echo -n "-x $(basename $1) "' _ {} \;) -r test/ test2/
Run Code Online (Sandbox Code Playgroud)
我添加了以下命令
find test -empty -type d -exec sh -c 'echo -n "-x $(basename $1) "' _ {} \;)
Run Code Online (Sandbox Code Playgroud)
diff它输出前面带有排除选项-x的每个空目录的基本名称。对于您的示例树,它将输出:-x dir1