폴더 A의 파일 목록을 복사하여 폴더 B의 여러 하위 폴더에 있는 동일한 이름의 파일을 덮어쓰려면 어떻게 해야 합니까?

폴더 A의 파일 목록을 복사하여 폴더 B의 여러 하위 폴더에 있는 동일한 이름의 파일을 덮어쓰려면 어떻게 해야 합니까?

파일 목록이 있습니다폴더 A:

  • Chapter1_ko.md
  • Chapter2_ko.md
  • Chapter3_en.md

나에겐 목표가 있다폴더 B하위 폴더(a, b, c, d 등. 폴더 이름은 임의임):

  • 폴더 B
      • Chapter1_ko.md
    • 두번째
      • 할 일이 없습니다.md
      • Chapter2_ko.md
      • 기타 파일.md
    • 이자형
      • Chapter3_en.md

내가 하고 싶은 것:

  • 각 파일마다폴더 A
  • 하위 폴더 찾기폴더 B같은 이름의 파일이 포함되어 있는 경우
    • 폴더 A/chapter1_cn.md -> 폴더 B/a/chapter1_cn.md
    • 폴더 A/chapter2_en.md -> 폴더 B/c/chapter2_en.md
  • 대상에서 파일이 발견되면 복사(덮어쓰기)

Linux 명령줄에서 (한 줄) 명령을 사용하여 이를 수행할 수 있는 방법이 있습니까?

내 사용 사례는 처음에 여러 하위 폴더에서 단일 폴더로 번역할 파일을 수집한 번역 사용 사례입니다. 번역가로부터 파일을 다시 가져온 후 파일을 원래 위치로 다시 배포하고 싶습니다. 내 경우에는 파일 이름이 고유한지 확인할 수 있지만 명명 규칙을 따르지 않고 여러 폴더에 분산되어 있습니다.

답변1

이것리눅스 명령줄그것은 당신이 생각하는 것과 다릅니다. Linux는 Unix 계열 및 Unix 계열이 아닌 운영 체제의 핵심에 있는 커널일 뿐입니다.

우리가 말한 것명령줄많은 라인 중심의 일반적으로 대화형 프로그래밍 언어 또는 도구의 구문을 채택하는 코드입니다. 예를 들어 nslookupDNS 쿼리를 입력하기 위한 명령줄, gdb작업을 위한 명령줄 gdb또는 매개변수가 포함된 명령을 실행하고 입력을 다른 명령/출력으로 리디렉션하거나 연결할 수 있는 셸 명령줄이 있을 수 있습니다 .

Linux 커널 자체에도 명령줄이 있습니다. 이것은 시작 시 부트로더에 전달되는 명령 목록입니다. 에서 해당 내용을 찾을 수 있지만 /proc/cmdline여기서는 아무 소용이 없습니다.

줄 기반이든 아니든 많은 프로그래밍 언어가 파일을 복사할 수 있지만 프로그래밍 질문은 대부분 unix.stackexchange.com 범위를 벗어납니다(질문이 마이그레이션된 stackoverflow.com 자매 사이트에 있습니다).

그러나 Unix 쉘도 범위에 포함됩니다. 파일이 복사 명령(예 cp: pax, , 등)을 호출하도록 하여 rsync그 안에 있는 파일을 복사 할 수 있습니다.

이러한 Unix 쉘 중 하나는 다음과 같습니다.zsh

에서는 zsh다음을 수행할 수 있습니다.

for src (A/*(N.)) for dst (B/*/$src:t(N.)) cp $src $dst

어느 루프정기적인( .glob 한정자 사용) 동일한 이름(ail)을 갖고 역시 일반인 하위 디렉터리의 모든 파일에 대해 A해당 파일을 복사합니다.Bt$src

관련 정보