하위 폴더 구조가 비슷한 두 개의 폴더가 있는데 비교하고 싶습니다. 예를 들면 다음과 같습니다.
A
├── child-1
├── child-2
├── child-3
├── child-4
├── child-5
과
B
├── child-1-some-text
├── child-2-more-text
├── child-3-nothing
├── child-6-random-text
├── child-7-more-random-text
나는에서 모든 하위 폴더를 나열하고자 A
하는 A의 하위 폴더에 대한 접두사 있습니다 B
에서 하위 폴더를 대응 목록 B
뿐만 아니라. 예상 출력은
child-1 -- child-1-some-text
child-2 -- child-2-more-text
child-3 -- child-3-nothing
보조 요구 사항 :에 여러 항목이 일치 B
하면 오류 / 경고가 표시됩니다.
내 해결책 :
cd A
for f in `ls -d */`;
do
cd B;
new_dirs=(`ls -1d $f*`);
cd -;
if [ ${#new_dirs[@]} -eq 0 ]
then
## DO_Nothing
continue;
elif [ ${#new_dirs[@]} -gt 1 ]
then
echo "Multiple matches to $f";
continue;
else
echo "Unique Match found to $f -- ${new_dirs[0]}";
continue;
fi;
done
문제:
에 $f
해당하는 하위 폴더가없는의 값에 B
대해 배열 구성에서 오류가 발생합니다. 예 :
ls : 'child-4 *'에 액세스 할 수 없습니다 : 해당 파일 또는 디렉토리가 없습니다.
질문
- 이러한 오류를 제거하는 방법?
- 거기에 더 나은 다음 목표 (들) 내 코드에서 하나를 달성하는 방법은?
미리 감사드립니다!
4
거의 작동하는 솔루션을 제공하는 +1!
—
user5325
이것은 특정 질문에 대한 답변이 아니지만
—
jrw32982는 Monica
diff -rq DIR1 DIR2
디렉토리 구조뿐만 아니라 파일 내용을 비교 하는 데 사용할 수 있습니다 .