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