我试图diff
在忽略某些子目录的同时比较两个目录树,但我无法让它工作。这是我的文件结构的样子:
temp/
|-- d1/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
|-- d2/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
我试图让它忽略d1/ignoreme
and下的任何内容d2/ignoreme
,但它不会这样做。
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/ d1 d2
Files d1/ignoreme/f2.txt and d2/ignoreme/f2.txt differ
我也试过
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* d1 d2
和
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* --exclude=/home/ubuntu/temp/d2/ignoreme/* d1 d2
但我总是得到相同的结果。我怎样才能让它工作?
GNU的
-x
or选项采用文件名通配模式,每个文件和目录的名称都将与之匹配。如果模式与特定名称匹配,则将该名称排除在比较之外。--exclude
diff
该模式应用于文件和目录的基本名称,而不是路径名,这意味着要排除您的
ignoreme
目录,您可以使用这也将排除任何其他恰好是
ignoreme
.这类似于递归运行时在 GNU 中的工作方式,
--exclude
--exclude-dir
grep
grep
尽管 GNUgrep
手册对此进行了更好的解释。info
GNU的diff
文档说明了这一点: