다음에서 파일과 하위 폴더를 복사하려고 합니다.ㅏ폴더가 없습니다ㅏ그 자체. 예를 들어,ㅏ폴더에는 다음 항목이 포함됩니다.
| 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/