패턴과 일치하는 모든 파일을 동일한 구조와 일치하는 새 폴더 트리에 복사하는 방법

패턴과 일치하는 모든 파일을 동일한 구조와 일치하는 새 폴더 트리에 복사하는 방법

All with 폴더가 있습니다

AllFolders
    F1
        some_file_20170315_xyz.txt
        some_file_20170314_xyz.txt
        ....
    F2
        some_other_file_20170315_abc.txt
        some_other_file_20170314_abc.txt
        ...
    ...
    Fn 

폴더 구조도 복사되어 다음과 같이 보이도록 특정 날짜와 일치하는 모든 파일을 다른 빈 폴더에 복사하려면 어떻게 해야 합니까?

Folder_20170315
    F1
        some_file_20170315_xyz.txt
    F2
        some_other_file_20170315_abc.txt

답변1

한 가지 방법은 다음을 사용하는 것 find입니다 cp.

find . -iname '*20170315*' -exec cp --parents {} /tmp/Folder_20170315 \;

대상 폴더가 이미 존재해야 합니다. 원한다면 생성을 스크립팅할 수도 있습니다.

파일 이름을 확인하려는 것처럼 보이지만 find파일 날짜를 확인하는 데에도 사용할 수 있습니다.

답변2

Mac에서는 사용할 수 없으므로 cp --parents비슷한 문제를 해결하기 위해 두 가지 명령을 사용했습니다.

find . -name '*.example' | xargs -I FOO dirname FOO | xargs -I FOO mkdir -p /new/root/directory/FOO
find . -name '*.example' | xargs -I FOO cp FOO /new/root/directory/FOO

첫 번째 명령은 디렉터리 트리를 만듭니다. 두 번째는 파일을 복사합니다.

이것은 find빠르다고 가정합니다. 성능 병목 현상이 발생 하는 경우 find추가로 최적화하는 것이 좋습니다. 예를 들어 작업을 함수로 이동할 수 있습니다.

관련 정보