![获取 find 输出以便稍后删除文件](https://linux22.com/image/1476632/%E8%8E%B7%E5%8F%96%20find%20%E8%BE%93%E5%87%BA%E4%BB%A5%E4%BE%BF%E7%A8%8D%E5%90%8E%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6.png)
我想获取此命令的结果:
find . -type f -size +200M -exec ls -lh {} \;
将内容存储到某种形式的变量中,然后删除找到的文件。
我怎样才能做到这一点?
答案1
您不需要将结果存储find
在变量中就可以删除文件(除非您有一些未提及的特定要求),因为提供了可以为您执行此操作的find
特殊参数:-delete
find . -type f -size +200M -print -delete
作为ls
不建议解析命令的输出。
如果您确实想解析返回的文件find
,您需要执行以下操作:
find . -type f -size +200M -print0 | xargs -0 rm -v
因为你不能用空字符保存 shell 变量,而且你也不想在空格处破坏脚本(这可能会导致巨型虫子),解决方法可以是将列表存储在临时文件中或序列化数据(例如base64
)。