Linux: CLI에서 대소문자가 다른 동일한 이름의 폴더를 병합하는 방법(BASH 선호)

Linux: CLI에서 대소문자가 다른 동일한 이름의 폴더를 병합하는 방법(BASH 선호)

내 Linux NAS에는 다음과 같은 경우를 제외하고 동일한 이름을 가진 폴더가 여러 개 있습니다.

  • /데이터 베이스
  • /데이터/라이브러리/사전 설정
  • /데이터/라이브러리/사전 설정
  • /데이터/라이브러리/사전 설정
  • /병합/읽어보기
  • /병합/읽어보기
  • /병합/읽어보기
  • /병합/읽어보기
  • 등.

이상적인 것은 아니지만 Linux에서는 괜찮습니다. 그러나 Windows PC를 지원하는 NAS에 있기 때문에 클라이언트 PC는 혼란스러워지고 실제로는 폴더 중 하나의 내용만 표시합니다. 모든 변경사항은…

너무 많아서 이러한 폴더를 자동으로 병합하고 싶습니다.

결국에는 폴더 이름당 하나만 사용하는 것이 궁극적인 목표이므로 "각 단어의 첫 글자를 대문자로 표시" 형식이 선호되지만 원격으로 가능하다면 대소문자는 실제로 중요하지 않습니다.

(참고: 이 폴더에 충돌하는 파일 이름이 포함될 수도 있다는 것을 알고 있습니다. 그러나 현재 내용이 다음과 같은 파일이 많기 때문에 논의 후에 내용이 다른 동일한 이름의 파일이 있을 수 있다는 위험을 감수할 의향이 있습니다. 어쨌든 쉽게 접근할 수 없습니다!)

이를 수행할 수 있는 미리 만들어진 CLI 도구(또는 BASH 스크립트)가 있습니까?

답변1

그래서 가장 중요한 하위 폴더에 대해 대소문자를 구분하지 않는 별도의 데이터 세트를 생성한 다음(원본 하위 폴더의 이름을 바꾼 후) rsync를 실행하여 데이터를 새 데이터 세트로 이동했습니다..... .

이제 모든 것이 잘 조화를 이루고 있으며 최종 결과에 매우 만족합니다. AFAICT 우리는 관련 데이터를 잃지 않았습니다... ;) (시작하기 전에 이것을 실행했는데 find . | sort -f | uniq -Di파일은 없고 폴더만 보았기 때문에 아무것도 잃지 않았을 것입니다!)

어떤 사람들은 Samba가 대소문자를 구분하기 때문에 Samba 공유에서는 이 작업을 수행하지 말라고 제안하지만, 그들이 언급할 수 있는 최악의 문제는 파일 이름을 "Readme.txt"에서 "ReadMe,txt"로 바꿀 수 없다는 것입니다. 파일이 이미 존재한다고 보고할 것입니다... 수정 사항은 분명합니다. "Read Me.txt"와 같은 다른 이름을 지정하거나 필요에 따라 이름을 바꾸기 전에 임시로 "readme1.txt"로 이름을 바꾸십시오.. . 아래에서 대소문자를 구분하지 않는 FS를 사용하지 않으면 답변이 없습니다. 그게 바로 제가 가진 문제입니다!

관련 정보