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

时间:2016-03-18 02:49:38

标签: linux file zip

/ test文件夹中有超过300000个文件,其中包含一个长名称(超过30个字符)和相同的标题,如“TEST_ *”我想将所有文件压缩成.zip包并从/ test中删除它们文件。 所以我使用命令show如下:

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

但运行shell脚本

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

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

3 个答案:

答案 0 :(得分:2)

您不需要将结果传递给zip命令。 find具有-exec参数,该参数将为每个匹配路径执行给定命令。我怀疑管道流程中的某些内容导致-m无法正常工作。

而是试试这个:

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

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

答案 1 :(得分:0)

zip -rm files.zip *.xml

这很好用

答案 2 :(得分:-1)

它仍然存在,因为没有人告诉它被删除。

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

如果它让你知道其中还有文件仍然存在,你仍然希望它不再添加-rf标志。 RECLUSIVE,意思是它下面的树和FORCE中的所有 - 只是做我告诉你的。

sudo rmdir / test -rf

在你这样做之前,只需仔细检查一切就是你想要的。