내 스크립트에 대한 그래픽 프로그램을 만들려고 합니다.
스크립트에서는 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
.