将目录中的每个文件压缩成自己的压缩文件

DD.*_*DD. 34 linux tar

如何将目录中的每个文件压缩到自己的 tar 中,同时保留每个文件的名称?

即 file1.out file2.out

-->

file1.out.tar.gz file2.out.tar.gz

Sve*_*ven 76

在这种情况下,将每个文件放入单独的 tar 文件没有任何意义。您可以使用gzip直接压缩它们:

gzip *
Run Code Online (Sandbox Code Playgroud)

将导致file1.out.gzfile2.out.gz等等。

tar仅当您需要将压缩存档作为单个文件时才使用。

如果您需要每个文件的 tar 存档,您可以像这样创建它:

for i in *; do tar -czf $i.tar.gz $i; done
Run Code Online (Sandbox Code Playgroud)

  • +1 - 没有理由为单个文件创建 tar(磁带存档)。只需压缩您想要压缩的内容 - 结果会稍微小一些,并且对于提取文件的人来说意义更大。 (7认同)

flu*_*ffy 11

要建立在@SvenW 的答案(仅适用于当前目录)的基础上,如果您有大量文件或想要在递归目录结构上执行此操作,您也可以使用

find . -type f -exec gzip \{\} \;
Run Code Online (Sandbox Code Playgroud)

如果您需要将输出放入不同的目录(在本例中为../target)并且不想删除原件,您可以执行以下操作:

find . -type f -print | while read fname ; do
    mkdir -p "../target/`dirname \"$fname\"`"
    gzip -c "$fname" > "../target/$fname.gz"
done
Run Code Online (Sandbox Code Playgroud)