xargs에게 tar를 디렉토리로 추출하도록 지시하는 방법

xargs에게 tar를 디렉토리로 추출하도록 지시하는 방법

나는 첫 번째 스크립트를 작성했습니다.

find /media/temp/test -type f -printf '%T@ %p\n*.tar.gz' | sort -n | tail -1 | cut -f2- -d" " | xargs tar -xvpf 

최근 수정된 파일 .tar.gz를 찾아 /media/temp/test 대신 일부 디렉토리에 추출하고 싶습니다.

답변1

나머지 명령이 제대로 작동한다고 가정하면 마지막 부분만 교체하면 됩니다.

xargs tar -xvpf

그리고

(cd /certain/directory; xargs tar -xvpf)

그리고 tar 명령은 이 디렉터리에서 실행됩니다. 이는 다른 디렉토리와 관련된 명령을 실행하는 데 일반적이고 유용한 "트릭"입니다.

tar 파일 이름(이 경우 find 명령의 출력)이 절대 경로이기 때문에 이는 여기에서만 작동합니다. 상대 경로 이름인 경우 위의 "cd"는 작동하지 않습니다.

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.

따라서 마지막 부분을

xargs tar -C /certain/directory -xvpf

tar 버전을 확인하고 테스트하세요. 플랫폼 간에는 미묘한 차이가 있습니다(사용 중인 UNIX 변형을 지정하지 않음). 아카이브의 경로 이름도 상대적이기 바랍니다.

관련 정보