상위 디렉토리를 삭제하고 해당 내용을 모두 유지하고 싶습니다. 내 현재 디렉토리 구조
$ /usermanagement/usermanagement/file1
상위 디렉토리를 삭제한 후 아래와 같은 구조를 보고 싶습니다.
$ /usermanagement/file1
답변1
(삭제할 디렉터리가 현재 작업 디렉터리라고 가정)
그리고 zsh
:
cd -P . &&
mv -- *(D) .. &&
cd -P .. &&
rmdir ~-
그리고 bash
:
cd -P . &&
(shopt -s dotglob && mv -- * ..) &&
cd -P .. &&
rmdir "$OLDPWD"
cd -P .
현재 작업 디렉토리가 $PWD
심볼릭 링크 없이 저장되어 있는지 확인하십시오. 숨겨진 항목(따라서 (D)
와일드카드 태그 및 dotglob
옵션) 을 포함하여 모든 파일과 디렉터리를 상위 항목으로 이동하려고 합니다 .
유효한 경우 현재 디렉터리를 한 수준 위로 변경하고 이전 디렉터리를 삭제합니다.
( 파일을 덮어쓰는 이동을 취소할 수 있는 -i
옵션을 추가할 수도 있습니다 )mv
답변2
어쩌면 귀하의 질문을 올바르게 이해하지 못했을 수도 있습니다. 하지만 귀하의 질문에서 얻은 답변은 다음과 같습니다.
nested
귀하가 이름이 이고 상위 디렉토리 이름이 인 현재 디렉토리에 있다고 가정합니다test
.
$ cp -Rp . ../;cd ../;rm -rf nested
설명하다
cp -Rp . ../
- 디렉터리, 중첩된 디렉터리 및 숨겨진 파일을 포함한 모든 파일이 복사됩니다. 어디,-R
"재귀적으로 디렉터리 복사"에 대한 플래그-p
"지정된 속성 유지(기본값: 모드, 소유권, 타임스탬프), 가능한 경우 추가 속성: context, link, xattr, all"입니다..
현재 디렉터리를 소스로 표시하는 데 사용됩니다...
상위 디렉터리를 대상으로 나타냅니다.
cd ../
- 현재 디렉터리에서 상위 디렉터리로 이동합니다.rm -rf nested
- 디렉터리, 중첩된 디렉터리 및 숨겨진 파일을 포함한 모든 파일이 삭제됩니다.
출처: 매뉴얼 페이지
답변3
위의 솔루션보다 더 간단한 방법은 다음과 같습니다.
mv /usermanagement/usermanagement /usermanagement.tmp
rmdir /usermanagement
mv /usermanagement.tmp /usermanagement
usermanagement
즉, 임시 이름을 사용하여 하위 디렉터리를 루트 디렉터리로 이동하고, (지금은 비어 있는) 상위 usermanagement
디렉터리를 삭제하고 마지막으로 /usermanagement.tmp
디렉터리 이름을 /usermanagement
.
답변4
아마도 가장 간단한 해결책은 다음과 같습니다.
$ mv /usermanagement/usermanagement/* /usermanagement/ && rmdir /usermanagement/usermanagement