tar
한 번에 여러 파일을 추출하도록 말할 수 있는지(물론 어떻게) 궁금합니다 .
저는 다년간의 경험을 가진 Unix 사용자입니다. 물론 추출하려는 각 아카이브에 대해 for
또는 find
이와 유사한 것을 한 번 호출 할 수 있다는 것을 알고 있지만 결과가 유효한 명령줄을 생각해낼 수 없습니다. tar
내 tar
한 번의 추출에는 두 개의 .tar.gz 파일이 있습니다. (아니요, 문제 없습니다 for
. 그냥 그것 없이도 할 수 있는지 묻는 것뿐입니다.)
궁금해서 이런 질문을 했을지도 모르지만
tar
이것을 지원하는 이상한 지점이 있습니다- 내가 시도했을 때 제안된
-M
매개변수를 사용하는 방법을 아는 사람이 있습니까?tar
tar -zxv -f a.tgz -f b.tgz
- 우리 둘 다 시각 장애인이고 이것은 완전히 쉽습니다. 하지만 온라인에서 활용하지 않거나 유사한 팁을 찾을
for
수find
없습니다xargs
.
답장을 보내지 마십시오 tar -zxvf *.tar.gz
(이렇게 하면아니요작동함) 그리고 완전히 확신하는 경우에만 "작동하지 않습니다"라고 답하세요(아마도 좋은 설명이 있을 것입니다).왜, 또한).
편집하다:나는 지적당했다스택 오버플로에 대한 이 질문에 대한 답변현재 구문을 위반하지 않고는 이것이 불가능하다는 것이 아주 자세하게 명시되어 있지만 tar
나는 이것이 사실이라고 생각하지 않습니다. IMHO, 기존 구문을 사용하거나 중단하지 않습니다 tar -zxv -f a.tgz -f b.tgz
.tar -zxv --all-args-are-archives *.tar.gz
답변1
이는 가능합니다. 구문은 매우 간단합니다.
$ cat *.tar | tar -xvf - -i
-i 옵션은 매뉴얼 페이지에서 tar 아카이브 끝에 있는 EOF를 무시합니다.
-i, --ignore-zeros
ignore blocks of zeros in archive (normally mean EOF)
답변2
을 위한 *.tar.gz:
for file in *.tar.gz; do tar -zxf "$file"; done
을 위한 *.tar.bz2:
for file in *.tar.bz2; do tar -jxf "$file"; done
을 위한 *.tar.xz:
for file in *.tar.xz; do tar -Jxf "$file"; done
을 위한 *.tar.zst 새로운 :
for file in *.tar.zst; do tar --zstf -xf "$file"; done
답변3
루프를 사용해야 합니다. tar
여러 옵션을 허용하기 위해 명령줄 구문을 깨지는 않지만 -f
다양한 가장자리 조건으로 여러 아카이브를 순서대로 처리하기 위한 코드를 추가해야 합니다(그 사이에 있는 아카이브의 형식이 잘못되면 어떻게 되나요? 아카이브가 다른 아카이브를 사용할 수 있습니까?) ) 압축 메커니즘? -C
여러 옵션도 가질 수 있습니까(특정 디렉토리로 추출하기 위한 GNU tar 옵션)? -K(멤버 이름으로 시작하는 GNU tar 옵션의 경우)는 어떻습니까?
루프를 피할 수 있는 한 가지 방법 for
은 설치하고 활성화하는 것입니다.AVFS,ㅏ퓨즈아카이브에 대한 투명한 액세스를 제공하는 파일 시스템입니다. 각 아카이브는 /path/to/archive
디렉토리로도 사용됩니다 ~/.avfs/path/to/archive#
. 와일드카드를 사용하여 아카이브를 일치시키려는 경우 #
이를 와일드카드 일치에 추가하는 데 장애물이 있습니다. 이는 zsh에서 수행할 수 있습니다.
mountavfs
cp -p ~/.avfs$PWD/{a,b}.tgz\#/* /destination
cp -p ~/.avfs/path/to/source/*.tgz(e\''REPLY=$REPLY\#'\')/* /destination