동일한 명령으로 특정 파일을 찾아 새 디렉터리로 이동하는 방법은 무엇입니까?

동일한 명령으로 특정 파일을 찾아 새 디렉터리로 이동하는 방법은 무엇입니까?

그래서 저는 주위를 둘러보면서 디렉토리가 이미 만들어진 경우에만 이 작업을 수행하는 방법을 찾았습니다. 즉, 다음과 같습니다.

find source -name '*.z' -exec cp {} destination \;

하지만 동일한 명령으로 이러한 파일을 보내려는 새 디렉터리를 어떻게 만들 수 있습니까? 이것은 내가 시도했지만 성공하지 못한 것입니다.

find source -name '*.z' -exec cp {} | mkdir newDirectory \;

답변1

install한 가지 옵션은 대신 명령 을 사용하는 것입니다 cp. 모든 주요 디렉토리를 생성하는 옵션이 있습니다.

find source -name '*.z' -exec install -D {} dest \;

답변2

데이터를 파이프할 수 없습니다그쪽 으로 mkdir. 다음과 같이 할 수 있습니다.

find source -name '*.z' -exec sh -c 'mkdir -p newDirectory && cp "$@" newDirectory' _ {} +

또는 (파일 이름에 개행 문자가 포함되어 있지 않다고 가정)

find source -name '*.z' | while IFS= read -r foo; do 
   mkdir -p newDirectory;
   cp "$foo" newDirectory;
done 

또는 하나의 디렉토리만 생성하려는 경우 이름은 항상 동일합니다.

mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;

관련 정보