"diff-exclude"는 어떻게 작동하나요?

"diff-exclude"는 어떻게 작동하나요?

특정 하위 디렉터리를 무시하면서 두 디렉터리 트리를 비교하는 데 이를 사용하려고 하는데 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또는 옵션은 모든 파일 및 디렉터리의 이름을 일치시키는 파일 이름 글로빙 패턴을 사용합니다. 패턴이 특정 이름과 일치하는 경우 해당 이름은 비교에서 제외됩니다.--excludediff

패턴은 경로 이름이 아닌 파일 및 디렉터리의 기본 이름에 적용됩니다. 즉, ignoreme사용할 수 있는 디렉터리를 제외한다는 뜻입니다.

diff -qr --exclude=ignoreme ...

이는 또한 ignoreme.

이는 다음과 유사합니다.GNU에서 --exclude합계가 작동하는 방식--exclude-dirgrep재귀적으로 실행 하는 경우에는 grepGNU grep매뉴얼에 더 잘 설명되어 있습니다.

infoGNU 문서diff철자를 쓰시 오:

-x PATTERN
--exclude=PATTERN
디렉터리를 비교할 때 기본 이름이 일치하는 파일 및 하위 디렉터리는 무시됩니다 PATTERN.

관련 정보