![지정된 하위 디렉터리의 특정 파일을 별도의 하위 디렉터리로 복사합니다.](https://linux55.com/image/66216/%EC%A7%80%EC%A0%95%EB%90%9C%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B3%84%EB%8F%84%EC%9D%98%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A1%9C%20%EB%B3%B5%EC%82%AC%ED%95%A9%EB%8B%88%EB%8B%A4..png)
"_CSF"로 끝나는 모든 하위 디렉터리의 모든 .fastq 파일을 다른 생성된 하위 디렉터리인 dir1_CSF에 복사하고 싶습니다.
특정 파일을 복사하는 방법은 이해하지만 특정 디렉터리에서 복사하는 방법은 이해하지 못합니다.
저는 쉘 스크립팅을 처음 접했기 때문에 도움이 매우 도움이 될 것입니다.
답변1
셸을 사용하면 다음을 수행할 수 있습니다.
find *_CSF -type f -iname "*.fastq" -exec cp {} dir1_CSF/ \;
답변2
DIR을 최상위 디렉터리로 설정하고 TARGET을 대상 디렉터리로 설정합니다. 그런 다음 다음을 실행하십시오.
find $DIR \( -type d -name "$TARGET" -prune \) -o \
\( -type f -name "*.fastq" -exec cp -t "$TARGET" {} + \)
네, 그게 순서입니다. 이는 GNU find 및 GNU fileutils가 이러한 경우에 cp
편리한 인수를 제공한다고 가정합니다.-t
어떻게 작동하나요?
(설정한 대로)로 시작하는 명령은 확장명과 일치하는 모든 파일을 찾습니다( 디렉토리 find
아래 의 파일은 제외). 그런 다음 이러한 모든 파일 이름을 프로그램 에 전달합니다 .$DIR
$TARGET
cp