2014-02-14 2 views
1

파이썬에서, 우리는 아카이브에있는 파일에 대한 대체 이름을 지정할 수 있습니다파이썬`tarfile` 모듈의`arcname` 옵션에 해당하는 tar 옵션은 무엇입니까?

with tarfile.open('archive.tar', 'w') as a: 
    a.add('files', arcname='another_name') 

이것은 arcname 매개 변수를 사용하여 수행됩니다.

이제 일반 tar 명령으로 동일한 작업을 수행하려고 시도하지만 대체 이름을 지정할 수있는 옵션을 찾을 수 없습니다.

+0

아마도'--strip-path'을 도와 드릴까요? 똑같은 것은 아니지만 경우에 따라 동일한 목표를 달성하는 데 사용될 수 있습니다. – shx2

+0

@ shx2 Thx. 하지만 제 경우에는 완전히 다른 이름을 지정하고 있습니다. – satoru

+0

명령에 실제로 컨트롤이 없습니다. 당신은 파일들로 가득 찬 디렉토리를 tar 업합니다. 파일의 특정 이름을 원하면'tar' 프로세스 전체를 시작하기 전에 이름을 변경하십시오. – torek

답변

1

GNU tar를 사용하는 경우 --transform 옵션을 사용할 수 있습니다.

$ rm test.tar 
$ touch a_name 
$ tar cf test.tar --transform s/.*/another_name/ a_name 
$ tar tf test.tar 
another_name 

GNU 타르에 따르면 (1) 맨 :

--transform, --xform EXPRESSION 
     use sed replace EXPRESSION to transform file names 
+0

이것은 내가 원하는 것처럼 보입니다. 당신의 모범에 대해 더 설명해 주시겠습니까? – satoru

+0

@satoru,'s /.*/ another_name /''sed'-style 명령 : 일치하는 이름 ('. *'은 텍스트와 일치 함)을 대체 문자열로 대체합니다. – falsetru

+0

@satoru,'s /.*/ another_name /'은 파이썬 표현식're.sub ('. *', 'another_name', 'a_name')와 유사하다.' – falsetru

관련 문제