![동일한 명령으로 특정 파일을 찾아 새 디렉터리로 이동하는 방법은 무엇입니까?](https://linux55.com/image/51201/%EB%8F%99%EC%9D%BC%ED%95%9C%20%EB%AA%85%EB%A0%B9%EC%9C%BC%EB%A1%9C%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%95%84%20%EC%83%88%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A1%9C%20%EC%9D%B4%EB%8F%99%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
그래서 주위를 둘러본 결과 디렉터리가 이미 생성된 경우에만 이 작업을 수행할 수 있다는 것을 알았습니다. 즉, 다음과 같습니다.
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 \;