답변:
고급 cp
cp -r /home/username/A/. /usr/lib/B/
대상 디렉토리가 이미 존재하는지 여부에 관계없이 작동하기 때문에 특히 좋습니다.
쉘 글 러빙
디렉토리에 오브젝트가 너무 많지 않은 경우 쉘 globbing을 사용할 수 있습니다.
mkdir -p /usr/lib/B/
shopt -s dotglob
cp -r /home/username/A/* /usr/lib/B/
rsync
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
)
A/*
은 의미가 있지만 작동하지 않는 상황이 있습니다.
shopt
입니다 bash
특정. 로 zsh
사용 *(D)
. 와 ksh93
, FIGNORE='@(.|..)'
. cp -t
GNU 전용입니다. find
이 모두 복사 할 것 같은 사람은 제대로 작동하지 않습니다 A/
여러 번 (하위 디렉토리 포함)의 컨텐츠를.
-maxdepth 1
( -mindepth
그리고 -maxdepth
GNU 확장을 지원하는 다른 사람들도 있습니다. Portably find .../. ! -name . -prune -exec ....
)
find .../.
여기에 오류가 발생합니다.
에게 cp
디렉토리의 내용이 아니라 디렉토리 자체를 복사 :
sudo cp -r /home/username/A/* /usr/lib/B/
shopt -s dotglob
에 점 파일이있는 경우이 작업을 수행 해야합니다 /home/username/A/
.