
all_folders
5개의 폴더가 포함된 폴더가 있습니다 .
./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
infront 를 배치하십시오.tar
그러나 이와 같은 아카이브 모음을 만드는 것은 일반적으로 바람직하지 않습니다. 일반적으로 전체 컬렉션을 압축하거나 이러한 파일이 있는 드라이브의 투명한 압축을 사용하거나 전송 압축( X-DEFLATE
예: HTTP 사용)을 사용하려고 합니다.
"압축된 디렉터리"가 아니라 "압축된 아카이브"로 끝나게 된다는 점에 유의하십시오. 아카이브는 파일 자체이고 디렉터리는 단순한 것이므로 이러한 항목은 서로 바꿔 사용할 수 없습니다.아이노드데이터그램.