Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用“压缩”压缩并自动删除文件;查找“;及;zip-m";在Linux上_Linux_File_Zip - Fatal编程技术网

尝试使用“压缩”压缩并自动删除文件;查找“;及;zip-m";在Linux上

尝试使用“压缩”压缩并自动删除文件;查找“;及;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文件夹中的文件仍然存在 我想问的是,为什么运行脚本后文件仍然存在? 如何解决这个问题?您不需要将结果通过管道传

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

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