현재 디렉터리의 내용을 한 수준 위로 이동하고 존재하는 경우 재귀적으로 덮어씁니다.

현재 디렉터리의 내용을 한 수준 위로 이동하고 존재하는 경우 재귀적으로 덮어씁니다.

zip을 현재 위치(라고 부르겠습니다)로 추출했으며 /httpdocszip 내부의 모든 내용은 이라고 부르는 디렉토리에 있습니다 myfiles.

그 안에는 /httpdocs디렉토리와 정확히 동일한 경로에 존재하는 수천 개의 디렉토리와 파일이 있습니다 myfiles.

myfiles/httpdocs이미 존재하는 디렉터리/파일을 재귀적으로 바꾸는 동안 디렉터리의 내용을 이동해야 합니다 .

myfiles디렉토리에서 시도하면 다음과 같습니다 .

mv * ../

존재하는 모든 파일을 덮어쓸지 묻는 메시지가 나타납니다... y/n!

다음에서 얻으려고 하면 /httpdocs:

mv myfiles/* .

존재하는 모든 파일을 덮어쓸지 묻는 메시지가 나타납니다... y/n!

-f힘 연산자를 적용하려고 하면 이동할 수 없다는 결과가 반환됩니다 Directory not empty.


이제 내가 읽은 바에 따르면 내가 하려는 작업이 mv해당 명령으로 달성 가능한 것 같지 않습니다. 이것이 아마도 내가 이 명령으로 아무데도 얻을 수 없는 이유일 것입니다.

나는 cprsync다른 많은 명령을 알고 있지만 실제로 디렉토리의 내용을 다른 위치로 이동하고 존재하는 경우 반복적으로 덮어쓰는 데 어떤 명령이 가장 적합한지 잘 모르겠습니다.


로컬 클라이언트에서 FTP를 통해 업로드하고 /httpdocs재정의 대화 상자에서 "모두 동의"를 선택하면 이 작업을 쉽게 수행할 수 있다는 것을 알고 있지만 시간이 오래 걸리므로 항상 실용적이지는 않습니다. 비슷한 효과가 발생하기를 추구하는 것뿐입니다. 명령줄을 통해.

답변1

아래에 논의된 바와 같이이 문제, 이 mv명령은 기존 파일을 덮어써 디렉터리를 "병합"하는 방법을 직접 제공하지 않습니다.

cp명령은 rm동등한 대안으로 함께 사용할 수 있습니다. 이 경우 명령은 다음과 같습니다.

cd /path/to/httpdocs
cp -r myfiles/* .
rm -r myfiles/

참고: 이 cp명령은 기본적으로 기존 파일을 덮어씁니다. OP에는 프로세스를 방해하는 별칭이 있습니다. 이 cp명령 의 별칭은 cp -i재정의할 때마다 대화형 확인이 필요하다는 것입니다. unalias cp먼저 실행하거나 구문을 사용하여 이를 재정의할 수 있습니다 \cp -r ...

관련 정보