仅压缩文件夹中的文件,不包括文件绝对路径中的文件夹

仅压缩文件夹中的文件,不包括文件绝对路径中的文件夹

我想将一个包含 100 个文件的文件夹以 10 个为一批进行压缩。我使用了以下脚本来执行此操作。但是当我解压 gzip 文件时,它包含来自 / 的所有文件夹。

find /home/ubuntu/reports/tmp -type f -print0 | split -t '\0' -l 5 -d --filter 'tar czf /home/ubuntu/reports/tmp/reports-$(date +"%F-%T")-$FILE.tar.gz --files-from=- --null'

谁能告诉我如何仅压缩文件而不压缩包含的文件夹?

答案1

最简单的方法就是直接cd进入目录并find从那里运行:

cd /home/ubuntu/reports/tmp
find . -type f -print0 | split -t '\0' -l 5 -d --filter 'tar czf /home/ubuntu/reports/tmp/reports-$(date +"%F-%T")-$FILE.tar.gz --files-from=- --null'

请注意,您正在与文件相同的目录中创建 tar.gz 文件,这意味着它们将出现在find的输出中,然后包含在其他tar.gz 文件。将 tar.gz 文件放在其他目录中。

此外,对于 10 个批次,您需要-l 10,而不是-l 5,也就是 5 个批次。

相关内容