尝试在 Linux 上使用 "find" 和 "zip -m" 压缩并自动删除文件

Trying to zip and automatically delete files with "find" and "zip -m" on Linux

/test 文件夹中有超过 300000 个文件,名称很长(超过 30 个字符)并且 header 像这样 "TEST_*" 我想将所有文件压缩到一个 .zip 包中并将它们从 /test 文件中删除。 所以我使用如下命令显示:

find ./test -name "TEST_\*" -mtime +1 | zip -m /home/TESTbac.zip -@;

但是在我 运行 shell 脚本

之后 /test 文件夹中的文件仍然存在

我想问的是为什么在运行安装脚本后文件仍然存在? 我该如何解决这个问题?

您不需要将结果通过管道传递给 zip 命令。 find 有一个 -exec 参数,它将为每个匹配路径执行给定的命令。我怀疑管道过程中的某些东西导致 -m 无法按预期工作。

试试这个:

find ./test -name "TEST_*" -exec zip -m /home/TESTbac.zip '{}' ';'

注意:引号中的分号表示-exec命令的结束。它被引用,因此命令行可以区分 -exec 命令的结尾与整个命令本身的结尾。同时,{} 会自动替换为具有匹配路径结果的 find

它之所以保留,是因为没有要求将其删除。

sudo rmdir /test <- 你的目录位置。

如果它让您觉得里面还有文件并且您仍然希望它消失,请向它添加一个 -rf 标志。 RECLUSIVE,意思是它下面的树中的所有内容和 FORCE——按照我告诉你的去做。

sudo rmdir /test -rf

在你这样做之前仔细检查一切是否正是你想要的。

zip -rm files.zip *.xml

这非常有效