5개의 폴더가 있는 폴더가 있습니다 all_folders
.
./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5
하나의 명령을 사용하여 이러한 모든 폴더를 한 번에 압축할 수 있습니까? all_folders
디렉토리로 이동한 다음 해당 디렉토리 내의 개별 폴더가 압축되도록 명령을 실행하고 싶습니다 .
예상 출력은 다음과 같습니다.
내가 할 때
ls
, 그러면 all_folders
10개의 디렉토리가 있어야 합니다. 5개는 압축되지 않은 상태이고 5개는 압축된 상태입니다.
답변1
cd
입력 all_folders
하고 실행
for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done
답변2
무엇을 달성하고 싶은지 약간 불분명합니다. 여기서는 하위 디렉터리만 압축해야 하는 사용 사례를 실행하고 있습니다.
먼저 디렉터리 컬렉션이 포함된 디렉터리로 이동한 후 다음을 수행합니다.
find -maxdepth 1 -type d | {
while read dir; do
if [ ! "x${dir#*/}" = "x." ]; then
tar cJf ${dir#*/}.tar.xz ${dir#*/};
fi;
done
}
이는 와 동일합니다 . 을 앞에 zsh
배치하여 명령이 체크아웃되는지 확인합니다.echo
tar
그러나 이와 같은 아카이브를 수집하는 것은 일반적으로 권장되지 않습니다. 일반적으로 전체 컬렉션을 압축하거나, 파일이 있는 드라이브에서 투명한 압축을 사용하거나, 전송 압축( X-DEFLATE
예: HTTP 사용)을 사용하려고 합니다.
"압축된 디렉터리"가 아니라 "압축된 아카이브"로 끝나는 점에 유의하세요. 아카이브 자체는 파일이고 디렉터리는 파일일 뿐이므로 이러한 항목은 서로 바꿔 사용할 수 없습니다.인덱스 노드데이터그램.