
내 스크립트에 대한 그래픽 프로그램을 만들려고 합니다.
스크립트 내에서 tar를 사용하여 tar 아카이브를 만듭니다.
그래픽 프로그램에서 tar 아카이브를 생성하려는 파일의 전체 이름을 얻습니다.
tar -cvf temp.tar /home/username/dir1/dir2/selecteddir
내 tar 아카이브에는 home, 사용자 이름, dir1, dir2 및 selecteddir이 포함되어 있지만 tar는 selecteddir만 포함하는 아카이브를 생성하고 싶습니다.
답변1
-C
이 작업을 수행하려면 다음 옵션을 사용할 수 있습니다 tar
.
tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir
맨 페이지에서 tar
:
-C directory
In c and r mode, this changes the directory before adding the following files.
In x mode, change directories after opening the archive but before extracting
entries from the archive.
답변2
이 문제에 접근하는 데 사용할 수 있는 두 가지 방법이 있습니다.
제 생각에는 첫 번째가 더 쉽습니다. cd
압축하려는 디렉토리 바로 위의 디렉토리로 이동 하세요 . 이 경우에는 dir2
.
$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir
--transform
두 번째 방법은 표현식을 가져와 sed
파일 이름에 대해 실행하는 옵션을 사용하는 것입니다 . 참고: 표현식 /
에서 이스케이프해야 합니다 sed
.
$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'
답변3
먼저 작업 디렉터리로 이동합니다.
cd /your/working/directory/
그런 다음 마법을 사용하세요 *
:-)
tar -cvf temp.tar *
답변4
해당 도트 디렉토리를 방지하려면 사실 이후에 이를 제거할 수 있습니다.
tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz
이렇게 하면 다음 파일만 포함된 아카이브가 생성됩니다.내용물의 /path/to/dir
.