이러한 파일만 포함된 디렉터리 내의 모든 파일(모든 파일은 일반 파일이며 디렉터리 내부에는 디렉터리, 심볼릭 링크 등이 없음)을 기존의 다른 디렉터리로 이동하고 싶습니다.
예를 들어 이러한 파일은 매우 일반적인 이름을 가지며 robots.txt
특정 패턴을 따르지 않습니다.
비슷한 명령을 시도했습니다.
cp -a "$HOME"/a "$HOME"/b
나는 이것이 재귀적으로 복사하는 명령 과 함께 -a
간단한 조합(스키마, 소유권 및 타임스탬프 유지)이라는 것을 알고 있습니다.-d
-R
복사가 반복되는 경우 파일이 복사되지 않는 이유는 무엇이며 해결 방법은 무엇입니까?
답변1
애플리케이션 시나리오:
디렉토리가
a
존재하지만b
존재하지 않습니다:cp -a "$HOME"/a "$HOME"/b
전체 디렉토리를
a
새 디렉토리에 복사b
디렉토리
a
와b
존재:cp -a "$HOME"/a "$HOME"/b
디렉터리가 복사됩니다.
a
~에목차b
그래서 당신은 디렉토리를 얻을 것입니다"$HOME"/b/a
.디렉토리
a
와b
존재:cp -a "$HOME"/a/* "$HOME"/b
복사할 것이다콘텐츠~의
a
~에디렉터리는b
제외되지만 숨겨진 파일과 디렉터리는 제외됩니다. 일부 쉘에는 이를 포함하는 옵션이 있지만 가장 좋은 접근 방식은 다음과 같습니다.cp -a ~/a/. ~/b/
그것이 당신이 원하는 것임을 이해합니다.
답변2
cp
안전 경고:
디렉토리 복사
디렉토리 a와 b가 존재합니다:
cp -a a b/
cp -a -t b a
a
디렉토리가 디렉토리로 복사됩니다 b
.
디렉토리 a는 존재하지만 b는 존재하지 않습니다.
cp -a a b/
cp -a -t b a
친숙한 오류 메시지가 생성됩니다
파일 복사
디렉토리 b가 존재합니다
cp -T a b
친숙한 오류 메시지가 생성됩니다
디렉토리 b가 존재하지 않습니다
cp -T a b
파일을 b에 복사합니다.
cp/mv/ln의 모든 버전에 -t
or -T
옵션이 있는 것은 아니지만 모든 버전에서 디렉토리를 /
보장 할 수 있습니다. b
이러한 옵션이 없으면 디렉터리 b
가 기존 디렉터리가 아니라는 보장이 없습니다.