특정 이름과 일치하는 디렉터리를 찾고 검색 결과가 있는 상위 디렉터리에서 반복적으로 복사합니다.

특정 이름과 일치하는 디렉터리를 찾고 검색 결과가 있는 상위 디렉터리에서 반복적으로 복사합니다.

m/n/o/p/q/r/s/t 디렉토리 구조가 있습니다.

이름 "r"과 일치하는 디렉터리를 찾고 검색 결과의 상위 디렉터리에서 내용을 재귀적으로 복사하고 싶습니다(예: 이 예에서는 "q/r/s/t" - 'cp - rq/r을 사용하여 얻을 수 있는 작업). <dir_location >')을 다른 위치로 이동합니다.

그것은 다음과 같습니다:

find m/n/o/p -type d -name "r" -exec cp -r "../{}" /<folder_to_copy_into> \;

-printf %h 및 -maxlength로 실험을 시도했지만 구문이 올바른지 확실하지 않습니다. 내가 원하는 결과를 얻기 위해 또 다른 발견을 해야 할지 잘 모르겠습니다. (목표는 찾기 결과의 하나의 상위 디렉토리에서 다른 디렉토리 위치로 반복적으로 복사하는 것입니다.)

"r"이라는 디렉터리를 찾을 수 있는 한 r의 상위 디렉터리에서 새 디렉터리 위치로 모든 것을 재귀적으로 복사하고 싶습니다. (예: m/n/o/p/q/r/s/t가 있는 경우 "q/r/s/t"를 새 디렉터리 위치에 반복적으로 복사하고 싶습니다.)

답변1

Bash 명령 문자열을 다음으로 바꿀 수 있습니다 -exec.

 .... -exec bash -c 'cp -r $(dirname $0) /target/' '{}' \;

@KamilMaciorowski의 의견을 고려하십시오. 추출하려는 내용이 약간 불분명합니다. 따라서 d1이와 같은 디렉토리 구조에서 검색하면

└ a
  └ b
    ├ c1
    │ └ d1
    │ └ d2
    │ └ d3
    ├ c2
    └ c3

위의 내용 c1은 .d2d3d1

답변2

이것은 나에게 효과적입니다.

find m/n/o/p -mindepth 1 -maxdepth 1 -type d -exec [ -d {}/r ] ';' -exec cp -r {} <folder_to_copy_into> \;)

관련 정보