폴더 자체가 아닌 폴더의 각 파일에 대한 폴더를 만듭니다.

폴더 자체가 아닌 폴더의 각 파일에 대한 폴더를 만듭니다.
        | folderA1 | fileA11, fileA12, ...
folderA | folderA2 | fileA21, fileA22...
        |  ...     | ... 

다음과 같이 표현하여 복사하고 싶습니다.

        | folderA1 | folderA11, folderA12, ...
folderB | folderA2 | folderA21, folderA22, ...
        | ...      |  ...

원본 폴더 A(및 해당 구조)는 그대로 유지됩니다(변경되지 않음).

나는폴더(폴더) B는 폴더 자체를 제외한 (폴더) A의 모든 파일을 의미합니다. 또한 원본 폴더(A)의 디렉터리 구조를 유지하고 싶습니다.

사용이 문제위 빌드를 달성할 수 있지만 폴더 A 자체가 포함되어 있습니다.

find source/. -type d -exec mkdir -p dest/{} \; \
   -o -type f -exec mkdir -p dest/{} \;

좋다:

         |         | folderA1 | folderA11, folderA12, ...
 folderB | folderA | folderA2 | folderA21, folderA22, ...
         |         | ...

답변1

거기에서 cd들어가서 folderA다음 명령을 실행할 수 있습니다.

cd folderA
find . -type d -o -type f -exec bash -c '
  for path; do mkdir -p "/path/to/folderB/${path/file/folder}"; done
' bash {} +

매개변수 확장은 ${path/file/folder}각각 fileXY의 이름을 folderXY.

각 폴더에 파일이 포함되어 있으면 해당 파일을 삭제할 수 있습니다 -type d -o.

관련 정보