폴더 자체 없이 폴더에서 파일을 복사하는 방법

폴더 자체 없이 폴더에서 파일을 복사하는 방법

다음에서 파일과 하위 폴더를 복사하려고 합니다.폴더가 없습니다그 자체. 예를 들어,폴더에는 다음 항목이 포함됩니다.

| file1.txt   
| file2.txt    
| subfolder1   

다음 명령을 실행하면 잘못된 결과가 나타납니다.

sudo cp -r /home/username/A/ /usr/lib/B/

밝혀지다

/usr/lib/B/A/...copied files...

바꾸다..

/usr/lib/B/...copied files...

없이 어떻게 원하는 목표를 달성할 수 있습니까?원본 폴더

답변1

고급 CP

cp -r /home/username/A/. /usr/lib/B/

이는 대상 디렉터리가 이미 존재하는지 여부에 관계없이 작동하기 때문에 특히 좋습니다.

쉘 와일드카드

디렉터리에 개체가 많지 않으면 쉘 글로빙을 사용할 수 있습니다.

mkdir -p /usr/lib/B/
shopt -s dotglob
cp -r /home/username/A/* /usr/lib/B/

동기화

rsync -a /home/username/A/ /usr/lib/B/

/소스 경로 끝에 있는 항목은 중요합니다. 대상 디렉터리가 이미 존재하는지 여부에 관계없이 유효합니다.

찾다

mkdir -p /usr/lib/B/
find /home/username/A/ -mindepth 1 -maxdepth 1 -exec cp -r -t /usr/lib/B/ {} +

또는 빈 하위 디렉터리가 필요하지 않은 경우:

find /home/username/A/ -mindepth 1 -type f -exec cp --parents -t /usr/lib/B/ {} +

(아니요 mkdir)

답변2

GNU 시스템의 경우 다음에서 수행 man cp:

   -T, --no-target-directory
          treat DEST as a normal file

cp -rT /home/username/A/ /usr/lib/B/이를 통해 올바른 내용을 작성할 수 있습니다 .

답변3

cp디렉토리 자체가 아닌 디렉토리의 내용을 복사 하도록 지시합니다 .

sudo cp -r /home/username/A/* /usr/lib/B/

관련 정보