tar의 --transform 매개변수를 사용하는 방법은 무엇입니까?

tar의 --transform 매개변수를 사용하는 방법은 무엇입니까?

다음 파일을 tar 및 zip으로 압축합니다.

/opt/abc/xyz/abc.xml

도착하다:

/tmp/backup/abc.xml.tar.gz

/opt/abc/xyz/(same path)압축을 풀고 디렉토리 에 추출하려고 합니다 .

나는 다음 명령을 발견했습니다. 사용자로 실행 했는데 root오류나 출력이 발견되지 않았습니다. 아래 명령이 abc.xml이를 추출 abc.xml.tar.gz하고 이름을 abc.xml_v9.

tar --force-local --transform='s/abc.xml/abc.xml_v9/' -zxpsf /tmp/backup/abc.xml.tar.gz -C /

출력은

/opt/abc/xyz/abc.xml_v9

tar의 매뉴얼 페이지에는 다음 정보가 표시됩니다.

File name transformations:      

       --transform=EXPRESSION, --xform=EXPRESSION
              use sed replace EXPRESSION to transform file names

              File name matching options (affect both exclude and include patterns):

누군가가 몇 가지 예를 들어 위 명령을 이해하도록 도와줄 수 있습니까?

답변1

샘플 파일 소스 /tmp/backup/abc.xml.tar.gz및 대상을 사용하십시오 /opt/abc/xyz/abc.xml_v9. 다음 명령을 사용할 수 있습니다.

tar --transform='flags=r;s|abc.xml|abc.xml_v9|' -xvf abc.xml.tar.gz -C /opt

또는

tar --transform='flags=r;s/abc.xml/abc.xml_v9/' -xvf abc.xml.tar.gz -C /opt

당신은 얻을 것이다

/opt/abc/xyz/abc.xml_v9

바라보다:

https://stackoverflow.com/questions/21790843/how-to-rename-files-you-put-into-a-tar-archive-using-linux-tar

https://www.gnu.org/software/tar/manual/html_section/transform.html#transform

관련 정보