중간 파일에 쓰지 않고 두 디렉토리에서 파일 이름을 어떻게 다른지?


31

나는 다음 라인을 따라 무언가를하려고합니다.

diff `ls -1a ./dir1` `ls -1a ./dir2`

그러나 그것은 명백한 이유로 작동하지 않습니다. 이것보다 (1 줄에) 이것을 달성하는 더 좋은 방법이 있습니까?

ls -1a ./dir1 > lsdir1
ls -1a ./dir2 > lsdir2
diff lsdir1 lsdir2

감사

답변:



10
diff -rq dir1 dir2

-r 옵션을 사용하여 전체 디렉토리 트리를 이동하여 각 디렉토리의 비슷한 지점에서 발생하는 서브 디렉토리와 파일의 차이점을 재귀 적으로 점검하십시오. 트릭은 -q 옵션을 사용하여 라인 별 비교를 억제하는 것입니다.


3
@festo :이 질문의 내용을 잃어 버렸습니다. 실제로 파일의 내용을 확인하고 싶지 않습니다. ls명령 의 출력을 확인하고
싶습니다

+1, 사실, 하나의 경고와 동일한 결과를 얻었습니다. diff -rq는 링크 된 파일을 'No such file or directory'로보고했습니다. 따라서 정확하고 솔직하게 사용하기위한 하나를 더한 것입니다. (IVA의 답변이 프로세스 대체 (> _ <)에 대한 더 나은 '학습 기회'인 경우에도)
xtian

1
이것은 파일 이름을 비교하는 것보다 훨씬 느립니다. 모든 파일의 전체를 읽고 비교해야합니다.
Zaz

@Josh는 물론 재귀 적으로 수행되기 때문에 ...
Braiam

1
@Braiam : 당신이 반복적으로 파일 이름 (사용 diff를하더라도 rsync으로 --dry-run, 예를 들어, 옵션), 그것은 여전히 훨씬 빠르게보다 것이다 diff -r.
자즈
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.