我想将一个包含 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 个批次。