在 bash 中:如何查找和删除包含特定文件的目录(仅当该文件早于 X 分钟)

在 bash 中:如何查找和删除包含特定文件的目录(仅当该文件早于 X 分钟)

在 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 {} \;
    

相关内容