![在 bash 中:如何查找和删除包含特定文件的目录(仅当该文件早于 X 分钟)](https://linux22.com/image/1608743/%E5%9C%A8%20bash%20%E4%B8%AD%EF%BC%9A%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%E5%92%8C%E5%88%A0%E9%99%A4%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%88%E4%BB%85%E5%BD%93%E8%AF%A5%E6%96%87%E4%BB%B6%E6%97%A9%E4%BA%8E%20X%20%E5%88%86%E9%92%9F%EF%BC%89.png)
在 bash 中,如何查找并删除包含特定文件的目录,仅当该文件早于 X 分钟时。
有 这个答案查找包含特定文件的目录。但是不清楚如何添加文件已存在超过 X 分钟的条件。
答案1
编辑:更简单的方法:
find . -name 'foobar.dat' -mmin +3 -exec bash -c 'rm -vr "$(dirname "$1")"' bash {} \;
基本上就是找到匹配的文件,然后删除它们的父目录。第二个“bash”字符串可以是任何内容,它只是为了避免将文件名放在“$0”中(虽然这似乎可以正常工作……)
以前不太优雅的解决方案:
我会用另一种方式来解决这个问题:
创建一个执行以下任务的小脚本
rm -r $(dirname $1)
(即删除参数的父目录)找到所有这样的文件,并对它们调用脚本:
find . -name 'foobar.dat' -mmin +3 -exec rmparent_script {} \;