첫 번째 수준의 두 폴더에서만 동일한 하위 폴더를 찾는 방법은 무엇입니까?

첫 번째 수준의 두 폴더에서만 동일한 하위 폴더를 찾는 방법은 무엇입니까?

대본:

  • 동일한 이름을 가진 하위 폴더가 있을 수 있는 2개의 기본 폴더(어떤 이름이 중복될 수 있는지 모르겠습니다. 그것이 제가 찾으려는 것입니다.)
  • 하위 폴더에는 다른 많은 파일과 하위 폴더가 있으므로 자동 재귀 기능이 있는 도구는 실제로 옵션이 아닙니다.
  • 두 개의 기본 폴더 중 첫 번째 수준에 있는 중복된 하위 폴더 이름에만 관심이 있습니다.
  • 하위 폴더의 내용은 중요하지 않습니다.
  • 파일의 내용은 중요하지 않습니다

GUI를 사용해 보았지만 meld이러한 구조를 완료하는 데 무한한 시간이 걸립니다.

사용해 보았지만 diff --brief --report-identical-files folder1 folder2기본적으로 모든 것을 보고하고 폴더도 포함하지 않으므로 | grep identical.

내가 잘못된 도구를 사용하고 있는 걸까? 아니면 내가 얻지 못한 어떤 트릭이 있습니까 diff --help? 아니면 내가 뭔가 잘못하고 있는 걸까요?

감사해요

답변1

나는 간단한 것을 사용합니다 find:

find "/path/to/main1" "/path/to/main2" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort | uniq -d

또는 개행 문자 관련 문제를 방지하기 위해 0으로 종료되도록 하려면 다음을 수행하십시오.

find "/path/to/main1" "/path/to/main2" -mindepth 1 -maxdepth 1  -type d -printf '%f\0' | sort -z | uniq -zd | xargs -0

답변2

zsh, 주어진 사용

% tree dir1 dir2
dir1
├── bar
└── foo
    └── baz
dir2
├── bar
│   └── baz
└── baz

6 directories, 0 files

그 다음에

% a=( dir1/*(/ND:t) ) ; b=( dir2/*(/ND:t) )

배열을 생성합니다/두 개의 최상위 디렉토리에 있는 디렉토리의 ails(기본 이름) dir1dir2(오글롭과Nullglob 옵션이 활성화됨).

그런 다음 양식 확장을 사용하여 ${name:*arrayname}두 배열에 모두 존재하는 요소만 유지할 수 있습니다.

% print -rC1 ${a:*b}
bar

관련 정보