尝试在 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
这非常有效
/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
这非常有效