특정 하위 디렉터리를 무시하면서 두 디렉터리 트리를 비교하는 데 이를 사용하려고 하는데 diff
제대로 작동하지 않습니다. 이것은 내 파일 구조입니다.
temp/
|-- d1/
| |-- f1.txt
| `-- ignoreme/
| `-- f2.txt
`-- d2/
|-- f1.txt
`-- ignoreme/
`-- f2.txt
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
나도 시도했다
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
...하지만 항상 같은 결과가 나옵니다.
어떻게 작동하게 합니까?
답변1
GNU -x
또는 옵션은 모든 파일 및 디렉터리의 이름을 일치시키는 파일 이름 글로빙 패턴을 사용합니다. 패턴이 특정 이름과 일치하는 경우 해당 이름은 비교에서 제외됩니다.--exclude
diff
패턴은 경로 이름이 아닌 파일 및 디렉터리의 기본 이름에 적용됩니다. 즉, ignoreme
사용할 수 있는 디렉터리를 제외한다는 뜻입니다.
diff -qr --exclude=ignoreme ...
이는 또한 ignoreme
.
이는 다음과 유사합니다.GNU에서 --exclude
합계가 작동하는 방식--exclude-dir
grep
재귀적으로 실행 하는 경우에는 grep
GNU grep
매뉴얼에 더 잘 설명되어 있습니다.
info
GNU 문서diff
철자를 쓰시 오:
-x PATTERN
--exclude=PATTERN
디렉터리를 비교할 때 기본 이름이 일치하는 파일 및 하위 디렉터리는 무시됩니다PATTERN
.