원본 폴더의 폴더 구조를 삭제하지 않고 파일 및 폴더 이동

원본 폴더의 폴더 구조를 삭제하지 않고 파일 및 폴더 이동

제가 원하는 것은 파일(및 하위 폴더)이 특정 폴더에 추가될 때 이동하는 것이지만 소스와 대상에서는 원래 폴더 구조를 유지하고 싶습니다. 나는 이것이 예를 들어 쉽게 설명될 수 있다고 믿는다. 다음 폴더/파일 구조를 상상해 보세요.

/source/foo/bar1
/source/bar2
/dest

다음 폴더/파일 구조를 보관하고 싶습니다.

/source/foo
/dest/foo/bar1
/dest/bar2

이 작업을 자동으로 수행하는 방법이 있나요? 귀하의 답변에 미리 감사드립니다.

답변1

rsync모든 것을 복사한 다음 소스에서 디렉터리를 제외한 모든 것을 삭제하는 데 사용됩니다 . 예를 들어 다음( source파일이 포함된 디렉터리 및 bar2파일이 포함된 하위 디렉터리)으로 시작합니다.foosource/foo/bar2

$ tree source/
source/
├── bar2
└── foo
    └── bar1

1 directory, 2 files

다음을 실행합니다.

rsync -r source/ dest/

이로 인해 다음이 생성됩니다.

    $ tree dest/
dest/
├── bar2
└── foo
    └── bar1

1 directory, 2 files

이제 디렉토리가 아닌 모든 항목을 삭제하십시오 source.

find source/ -not -type d -delete

또는 find없는 경우 다음을 -delete사용하세요.

find source/ ! -type d -exec rm {} +

자동화하려면 다음과 같은 작은 스크립트를 작성하면 됩니다.

#!/bin/sh

source="$1"
dest="$2"

rsync -r "$source"/ "$dest"/ 
find "$source"/ -not -type d -delete

스크립트를 실행 가능하게 만들고 소스 및 대상 디렉터리를 인수로 사용하여 실행합니다.

foo.sh /source /dest

관련 정보