gpt4 book ai didi

linux - 压缩早于 X 的文件并在删除旧文件后的声明

转载 作者:太空狗 更新时间:2023-10-29 11:28:39 24 4
gpt4 key购买 nike

尝试执行一个 bash 脚本,它将压缩早于 X 的文件,并在压缩后删除未压缩的版本。尝试过类似的方法,但它不起作用。

find /home/randomcat -mtime +11 -exec gzip {}\ | -exec rm;

最佳答案

默认情况下,gzip将删除未压缩的文件(因为它用压缩变体替换它)。而且您不希望它在纯文件以外的任何其他内容上运行(不在目录或设备上,不在符号链接(symbolic link)上)。

所以你至少要

 find /home/randomcat -mtime +11 -type f -exec gzip {} \;

你甚至可以想要 find(1)避免带有多个 硬链接(hard link)的文件。您可能还希望它在运行命令之前询问您。那么你可以试试:

find /home/randomcat -mtime +11 -type f -links 1 -ok gzip {} \;

带有-exec-okfind 命令需要分号(或+ 符号),你需要 escape那个分号 ; 来自你的 shell .您可以使用 ';' 而不是 \;quote它...

如果您使用 +find 命令会将多个参数分组(到单个 gzip 进程),因此将运行更少的进程(但它们会持续更长时间)。所以你可以试试

 find /home/randomcat -mtime +11 -type f -links 1 -exec gzip -v {} +

您可能想阅读更多关于 globbing 的信息以及外壳如何works .

顺便说一句,你不需要任何 command pipeline (正如您在问题中错误使用 | 所暗示的那样)。

您甚至可以考虑使用 GNU parallel并行运行事物,或使用例如提供一些 shell(带有后台作业)

find /home/randomcat -mtime +11 -type f -links 1 \
-exec printf "gzip %s &\n" {} \; | bash -x

但实际上您不会加快处理速度。

关于linux - 压缩早于 X 的文件并在删除旧文件后的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47013001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com