Tar 파일이 있습니다.testwebsite.tar
내용을 추출하려는 웹 서버의 디렉토리, 즉 mytestdirectory에 배치했습니다.
PuTTY를 통해 이 명령을 실행합니다.tar -xvf testwebsite.tar
결과적으로 콘텐츠가 추출되지만 형식은 다음과 같습니다.
mytestdirectory/srv/test/www.testwebsite.com/
mytestdirectory
존재하는 모든 파일이 하위 디렉터리 에 포함되기를 원합니다 www.testwebsite.com
.
명령을 사용하여 이 하위 디렉터리의 모든 항목을 상위 디렉터리로 이동할 수 있는 방법이 있습니까 mv
?
나는 둘러보고 몇 가지 답변을 시도했는데 그 중 하나는 하위 디렉터리에서 이 명령을 실행하는 것이었습니다.
mv * .[^.]* ..
하지만 이로 인해 다음 메시지가 표시됩니다.
mv: cannot stat `*': No such file or directory
mv: cannot stat `.[^.]*': No such file or directory
누구든지 이 문제를 해결하도록 도와줄 수 있나요? 나는 기본적으로 www.testwebsite.com 하위 디렉터리에서 mytestdirectory 상위 디렉터리로 모든 항목(숨겨진 파일 포함)을 이동하려고 합니다.
답변1
tar 옵션을 사용해야 합니다 --strip-components
. 이는 tar 아카이브에 필요하지 않은 경로가 포함되어 있기 때문입니다.
예를 들어 tar에 다음이 포함되어 있고 srv/test/www.testwebsite.com/index.html
이것을 얻으려면 mytestdirectory/index.html
다음이 필요합니다.
$ cd /path/to/mytestdirectory
$ tar xf testwebsite.tar --strip-components=3
verbose 명령을 사용하는 경우에도 전체 원본 파일 이름을 설정하므로 매개변수를 추가하여 --show-transformed
수정된 경로를 나열할 수도 있습니다.
$ tar tfz workspace.tar.gz --strip-components=2 workspace/project
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 workspace/project/aaa
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 workspace/project/bbb
[... list continues ...]
$ tar tfz workspace.tar.gz --strip-components=2 --show-transformed workspace/project
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 aaa
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 bbb
[ ... and so on ...]
상황을 해결하려면 mv
다음을 수행하십시오.
# cd /path/to/mytestdirectory
# mv srv/test/www.testwebsite.com/* .
숨겨진 파일을 처리하기 위한 한 가지 해결책은 다음과 같습니다.
# shopt -s dotglob
위 명령 이전에 실행하고 glob에 대한 도트 파일도 일치시키거나 더 나은 방법으로 현재 대상 디렉터리를 삭제한 다음 복사할 디렉터리를 이동하고 이름을 바꿉니다.
[ delete or rename current /path/to/mytestdirectory ]
# cd /path/to
# mv srv/test/www.testwebsite.com/ mytestdirectory/
# rmdir srv/test/ srv/