여러 하위 디렉터리의 파일을 동일한 대상 디렉터리로 복사

여러 하위 디렉터리의 파일을 동일한 대상 디렉터리로 복사

이런 디렉토리가 있어요

Main Directory
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg

SubsubDirectory1의 모든 파일을 대상 디렉터리에 복사하고 싶습니다.

답변1

파일 이름이 고유하지 않은 경우

cp "Main Directory"/*/Subsubdirectory1/* destdir

대상의 일부 파일을 덮어쓰게 됩니다. 이 경우에도 실패합니다.수천일치하는 경로 이름.

이 문제를 해결하려면 GNU를 사용하십시오 cp.

for pathname in "Main Directory"/*/Subsubdirectory1/*; do
    cp --backup=numbered "$pathname" destdir
done

이렇게 하면 덮어쓰게 될 파일의 ​​백업 번호가 생성됩니다.

같은 일이지만 GNU가 아닌 것을 사용하는 경우 cp:

for pathname in "Main Directory"/*/Subsubdirectory1/*; do

    # create first stab at destination pathname
    dest="destdir/${pathname##*/}"

    i=0
    while [ -e "$dest" ]; do
        # destination name exists, remove backup number from end of
        # pathname and replace with next one in the sequence
        i=$(( i + 1 ))
        dest="${dest%.~*~}.~$i~"
    done

    cp "$pathname" "$dest"
done

답변2

이 시도:

cp mainDir/*/SubsubDirectory1/* <destination_path>

참고: 파일 이름은 달라야 합니다.

관련 정보