각 파일의 이름을 유지하면서 디렉토리의 모든 파일을 자체 tar로 압축하는 방법은 무엇입니까?
즉 file1.out file2.out
->
file1.out.tar.gz file2.out.tar.gz
답변
이 시나리오에서는 모든 파일을 별도의 tar 파일에 넣는 것이 의미가 없습니다. gzip
직접 압축하는 데 사용할 수 있습니다 .
gzip *
초래 것 file1.out.gz
, file2.out.gz
등등
tar
압축 된 아카이브가 단일 파일로 필요한 경우에만 사용 합니다.
모든 파일에 대해 tar 아카이브가 필요한 경우 다음과 같이 만들 수 있습니다.
for i in *; do tar -czf $i.tar.gz $i; done
답변
@SvenW의 답변을 바탕으로 (현재 디렉토리에서만 작동합니다) 파일 수가 많거나 재귀 디렉토리 구조에서 수행하려는 경우에도 사용할 수 있습니다
find . -type f -exec gzip \{\} \;
출력을 다른 디렉토리 (이 예에서는 ../target
)에 넣고 원본을 제거하지 않으려는 경우 다음과 같이 할 수 있습니다.
find . -type f -print | while read fname ; do
mkdir -p "../target/`dirname \"$fname\"`"
gzip -c "$fname" > "../target/$fname.gz"
done
답변
이거 한번 해봐:
#!/bin/bash
for fich in *; do
if [ "$fich" != "*" ] ; then
gzip -9 -c $fich > $fich.tar.gz
\mv $fich.tar.gz $fich
fi
done