![여러 하위 폴더를 일괄 압축하는 방법은 무엇입니까?](https://linux55.com/image/83378/%EC%97%AC%EB%9F%AC%20%ED%95%98%EC%9C%84%20%ED%8F%B4%EB%8D%94%EB%A5%BC%20%EC%9D%BC%EA%B4%84%20%EC%95%95%EC%B6%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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 사용)을 사용하려고 합니다.
"압축된 디렉터리"가 아니라 "압축된 아카이브"로 끝나는 점에 유의하세요. 아카이브 자체는 파일이고 디렉터리는 파일일 뿐이므로 이러한 항목은 서로 바꿔 사용할 수 없습니다.인덱스 노드데이터그램.