답변:
diff
이미 수행하고 있습니다 :
diff dir1 dir2
출력 예 :
Only in dir1: some_file.txt
Only in dir1: some_other_file.txt
Only in dir2: third_file.txt
세게 때리다:
diff <(cd dir1; ls) <(cd dir2; ls)
파일의 내용이 아닌 파일 이름 만 비교하십시오.
ls
사용 find
하는 대신!
모든 하위 디렉토리를 통해이 작업을 수행하려는 경우 좋은 방법은 다음과 같습니다.
diff --brief -r dir1/ dir2/
나는 간략하게 사용하는 것을 선호하지만 원한다면 그것을 생략 할 수 있습니다.
데니스 윌리엄슨 (Dennis Williamson)은 좋은 답변 을 얻었지만 재귀 적으로해야했습니다. GNU findutils 4.7.0은 출력을 정렬하지 않으므로 여기에 내가 사용한 것이 있습니다.
diff <(cd $dir1; find | sort) <(cd $dir2; find | sort)
이 방법을 한 가지만 수행하고 파일 목록을 생성하려면 다음을 사용했습니다.
diff <(cd $dir1; find | sort) <(cd $dir2; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"
이것이 제대로 작동하려면 $ dir1이나 $ dir2에 슬래시를 포함해서는 안됩니다.
diff dir1 dir2 | grep "Only"