
와증가하는 숫자아카이브/압축 파일 형식을 모두 관리할 수 있는 단일 무료/오픈 소스 명령줄 도구가 있습니까? 아마도 일관되고 통합된 플래그 세트가 있는 것일까요? (내 친구를 주목해 주세요tar에 대한 암시적 참조)
한때 다른 유틸리티에 대한 바인딩을 사용하여 파일을 압축/압축 해제하는 작업을 크게 단순화하기 위한 별칭 집합을 만난 적이 있지만 tar
더 이상 찾을 수 없습니다.
업데이트:atool
zip 파일을 추출하는 데 사용하지 않고 unzip
(4GB보다 큰 파일을 처리할 수 없음) 대신 사용하도록 어떻게 구성할 수 있나요 gunzip
?
$ aunpack large_file.zip
error: Zip file too big (greater than 4294959102 bytes)
Archive: large_file.zip
warning [large_file.zip]: 1491344848 extra bytes at beginning or within zipfile
(attempting to process anyway)
error [large_file.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
aunpack: unzip ...: non-zero return-code
답변1
나는 사용한다도구. 그것은 일을합니다. 모든 형식은 아니지만 다양한 형식에서 작동합니다.
tar, gzip, bzip2, bzip, lzip, lzop, lzma, zip, rar, lha, arj, arc, p7zip 등
이러한 압축 도구는 여전히 필요하지만 atool은 단순히 프런트 엔드에 불과합니다.
als
특히 지원되는 아카이브 형식의 내용을 나열하는 명령이 마음에 듭니다 .
기본 atool
명령은 아카이브 추출을 위해 자체 플래그를 사용합니다(특정 기본 추출 도구에 적절한 플래그 전달).
아, 그리고 그것은 일부 배포판의 리포지토리에 있습니다 (내 경우에는 Fedora, 제가 기억하기로는 우분투를 사용할 당시에는 리포지토리에 없었고 타르볼에서 설치했습니다.).
저장소 업데이트: atool은 다음 배포판의 저장소에 있습니다(현재 릴리스만 확인됨):
- 페도라
- Debian(@terdon에게 감사드리며, 아마도 Ubuntu와 같은 파생물일 것입니다)
- 우분투(qed 및 아마도 Mint와 같은 파생물)
- 오픈 수세
- CentOS(및 아마도 RHEL)
- 아치 리눅스
나는 다른 것들이 있다고 확신합니다... 그럴듯하게, 가장 현대적인 배포판입니다.
업데이트된 질문에 대한 답변 "zip 파일을 추출하기 위해 unzip을 사용하지 않고 ... 대신 gunzip을 사용하도록 atool과 같은 것을 구성하려면 어떻게 해야 합니까?":
atool 구성 파일을 편집 ~/.atoolrc
하고 다음 줄을 추가합니다.
path_unzip /usr/bin/gunzip
gunzip 프로그램의 올바른 경로를 사용하십시오.
이 구성 파일에 넣을 수 있는 가능한 변수의 전체 목록은 매뉴얼 페이지를 참조하세요.많이. gunzip에 필요한 명령줄 옵션이 unzip과 다른 경우 atool 소스(perl) 자체를 수정해야 할 수도 있습니다.
답변2
다음은 여러 아카이브 유형을 관리하는 작은 셸 함수입니다.
extract () {
if [ ! -f "$1" ] ; then
echo "'$1' does not exist."
return 1
fi
case "$1" in
*.tar.bz2) tar xvjf "$1" ;;
*.tar.xz) tar xvJf "$1" ;;
*.tar.gz) tar xvzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) rar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.tbz2) tar xvjf "$1" ;;
*.tgz) tar xvzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.xz) xz -d "$1" ;;
*.7z) 7z x "$1" ;;
*.a) ar x "$1" ;;
*) echo "Unable to extract '$1'." ;;
esac
}
나는 찾았다원래 버전이 기능을 온라인 어딘가에 저장하고 약간 수정하여 ar
아카이브와 xz 압축 tar
아카이브를 추출했습니다.
답변3
그만큼AVFS/path/to/foo.zip
filesystem은 모든 아카이브 파일(예: )이 디렉토리( ~/.avfs/path/to/foo/zip#
이 예에서는) 로 액세스할 수 있는 파일 시스템의 보기를 제공합니다 . AVFS는 가장 일반적인 아카이브 파일 형식에 대한 읽기 전용 액세스를 제공합니다.
mountavfs
cp -Rp ~/.avfs$PWD/large_file.zip\# extraction_directory
Avfs는 파일을 편집하여 쉽게 구성할 수 있는 외부 도우미를 사용합니다 /usr
(불행히도 avfs 1.0에서는 홈 디렉터리에 있는 파일을 사용할 수 있는 방법이 없으므로 /usr/local
파일을 편집하거나 다시 컴파일해야 합니다 /usr
). 파일을 /usr/share/avfs/extfs/ext-uzip
처리하는 스크립트이므로 .zip
사용하지 않으려면 변경하세요 /usr/bin/unzip
. 대신 7z를 사용하여 벗어날 수도 있습니다. 편집을 시도 /usr/share/avfs/extfs/extfs.ini
하고 행 ext-uzip
을 u7z .zip
.
답변4
도서관는다중 형식 아카이브 및 압축 라이브러리지원하는다양한 아카이브 및 압축 형식.
bsdtar
그리고 각각 -like API를 사용 bsdcpio
하는 명령줄 인터페이스입니다 .tar
cpio
따라서 이러한 유틸리티 중 하나에 이미 익숙하다면 배울 것이 더 적은 명령줄 인터페이스입니다.
.iso
, .zip
, .cab
, .7z
, ... 파일의 압축을 풀려면 .tar.gz.xz.bz2
다음과 같이 하세요.
bsdtar xf file.<ext>
tar xf file.tar
전통적인 명령을 사용하는 것과 같습니다 tar
.