/test 文件夹中有超过 300000 个文件,它们的名称很长(超过 30 个字符),并且标头相同,如“TEST_*” 我想将所有文件压缩到 .zip 包中,并将它们从 /test 文件中删除。所以我使用了如下命令:
find ./test -name "TEST_\*" -mtime +1 | zip -m /home/TESTbac.zip -@;
Run Code Online (Sandbox Code Playgroud)
但运行 shell 脚本后 /test 文件夹中的文件仍然存在
我想问的是为什么运行脚本后文件仍然存在?我该如何解决这个问题?
您不需要将结果通过管道传递给zip命令。find有一个-exec参数,将为每个匹配路径执行给定的命令。我怀疑管道过程中的某些因素导致其-m无法按预期工作。
而是尝试这个:
find ./test -name "TEST_*" -exec zip -m /home/TESTbac.zip '{}' ';'
Run Code Online (Sandbox Code Playgroud)
注意:带引号的分号表示命令结束-exec。它被引用,以便命令行可以区分命令的结尾-exec和整个命令本身的结尾。同时,{} 会自动替换为find匹配的路径结果。
| 归档时间: |
|
| 查看次数: |
9180 次 |
| 最近记录: |