尝试使用“压缩”压缩并自动删除文件;查找“;及;zip-m";在Linux上
/test文件夹中有超过300000个文件,具有长名称(超过30个字符)和相同的标题,如“test”*。我想将所有文件压缩到.zip包中,并将其从/test文件中删除。 因此,我使用命令show,如下所示:尝试使用“压缩”压缩并自动删除文件;查找“;及;zip-m";在Linux上,linux,file,zip,Linux,File,Zip,/test文件夹中有超过300000个文件,具有长名称(超过30个字符)和相同的标题,如“test”*。我想将所有文件压缩到.zip包中,并将其从/test文件中删除。 因此,我使用命令show,如下所示: find ./test -name "TEST_\*" -mtime +1 | zip -m /home/TESTbac.zip -@; 但是在我运行shell脚本之后,/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
。它保留下来,因为没有任何东西告诉它被删除
sudormdir/测试
这非常有效是的,我正在尝试查找任何标题为“TEST”*“TEST”*“@GreenDavid”的文件。我已根据您的评论/编辑修改了答案。花括号占位符
{}
不安全。你应该像引用'{}'
一样引用它,以防止文件名中嵌入空格、通配符等。@ChrisJohnson我做了更改。1)是的,他告诉它使用zip-m
删除它们。2) 无需使用sudo
。3) 他想删除添加的文件,而不是父目录。4) 它是“递归的”而不是“隐居的”。5) 它将是rm-rf
而不是rmdir-rf
。6) 他没有说他想删除目录中的所有文件,只是那些进入zip文件的文件。
zip -rm files.zip *.xml