![특정 이름과 일치하는 디렉터리를 찾고 검색 결과가 있는 상위 디렉터리에서 반복적으로 복사합니다.](https://linux55.com/image/14319/%ED%8A%B9%EC%A0%95%20%EC%9D%B4%EB%A6%84%EA%B3%BC%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EC%B0%BE%EA%B3%A0%20%EA%B2%80%EC%83%89%20%EA%B2%B0%EA%B3%BC%EA%B0%80%20%EC%9E%88%EB%8A%94%20%EC%83%81%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%EB%B0%98%EB%B3%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%B3%B5%EC%82%AC%ED%95%A9%EB%8B%88%EB%8B%A4..png)
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
은 .d2
d3
d1
답변2
이것은 나에게 효과적입니다.
find m/n/o/p -mindepth 1 -maxdepth 1 -type d -exec [ -d {}/r ] ';' -exec cp -r {} <folder_to_copy_into> \;)