
다른 디렉토리에 일부 mp3가 있습니다. 나
find $HOME -name *.mp3|pax -wf arch.tar
명령은 제대로 작동하지만 추출 시 전체 디렉터리가 다시 생성됩니다.
tar -tvf arch.tar
반품
dir1/dir2/sound.mp3
dir3/music.mp3
dir4/dir5/anotherdir/anothermusic.mp3
물론 추출할 때 많은 디렉토리가 생성됩니다. 내 소원은 이것이다
find $HOME -name *.mp3|pax -w"possibleoption" -f arch.tar
이런 파일을 받으세요
/sound.mp3
/music.mp3
/anothermusic.mp3
이것이 안전하지 않다는 것을 알고 있지만 dir 경로를 동적으로 삭제할 수 있습니까?
ps= 예를 들어 pax 명령을 사용했는데 클래식 tar도 잘 작동합니다.
답변1
이러한 변형은 모두 사용자가 아카이브를 생성하고 아카이브 자체에 원래 경로를 저장했다고 가정합니다. 아카이브를 나열/추출할 때 경로를 변환합니다.
pax
해당 플래그와 함께 사용됩니다 -s
.
pax -f archive.tar -s '@.*/@/@' '*.mp3'
-r
실제로 파일을 추출하기 위해 처음에 추가되었습니다 .
BSD 사용 tar
:
tar -tf archive.tar -s '@.*/@/@' '*.mp3'
실제로 파일을 추출 -t
하도록 변경합니다 .-x
GNU 사용 tar
:
tar -tPf archive.tar --transform 's@.*/@/@' --show-transformed-names --wildcards '*.mp3'
실제로 파일을 추출 -t
하도록 변경합니다 .-x
문자열 교체는 아카이브에 저장된 경로를 제거하고 단일 /
.
표준 입력에서 경로 이름을 읽는 파일을 사용하여 아카이브를 생성하는 것과 동일한 작업(경로를 로 바꿔 이름 변환 /
):
pax
:
pax -w -f archive.tar -s '@.*/@/@'
BSD tar
:
tar -c -f archive.tar -s '@.*/@/@'
그누 tar
:
tar -c -f archive.tar --transform='s@.*/@/@' --files-from=-