Bash 正在尝试删除文件及其父目录

Bash 正在尝试删除文件及其父目录,bash,rm,Bash,Rm,我有一个脚本,可以在超过30天的文件夹中查找文件: find /my/path/*/README.txt -mtime +30 这将产生如下结果: /my/path/jobs1/README.txt /my/path/job2/README.txt /my/path/job3/README.txt 现在我要做的是删除超过30天的文件夹+文件 find /my/path/*/README.txt -mtime +30 -exec rm -r {} \; 似乎不起作用。它只是删除readm

我有一个脚本,可以在超过30天的文件夹中查找文件:

find /my/path/*/README.txt -mtime +30
这将产生如下结果:

/my/path/jobs1/README.txt
/my/path/job2/README.txt
/my/path/job3/README.txt
现在我要做的是删除超过30天的文件夹+文件

 find /my/path/*/README.txt -mtime +30 -exec rm -r {} \; 
似乎不起作用。它只是删除readme.txt文件

理想情况下,我只想删除/job1、/job2、/job3和任何嵌套文件


谁能给我指出正确的方向吗

这是一种更安全的方法:

find /my/path/ -mindepth 2 -maxdepth 2 -type f -name 'README.txt' -mtime +30 -printf '%h\n' | xargs echo rm -r
如果在查看输出后发现它已经正确,请删除
echo


使用
printf“%h\n”
获取文件的目录,然后使用
xargs
对其进行处理。

您只需运行以下命令,即可递归删除30多天前修改的目录

find /my/path/ -type d -mtime +30 -exec rm -rf {} \;

是否要删除文件夹中包含30天以上文件的所有文件,或仅删除30天以上文件(如果目录中仍包含较新文件,则离开目录)?方法可能是:查找-深度打印,首先删除/my/path/下超过30天的(rm)文件,然后再次删除(rmdir)剩余的/my/path/../directories/超过30天的。。。(-深度从目录树中的“leafs”开始),但删除了其中的一个文件后,它们现在已经有几秒钟的时间了^^。因此,您需要在几个步骤中编写脚本,我猜这将删除包含该文件的目录,即使该目录(和子目录)包含其他较新或较旧的文件。。。这可能相当危险,具体取决于/my/path/。。。。并且可能会在过程中删除非常重要的目录^^不要尝试使用“/”,因为任何未经修改的目录(即,其中未添加/删除/更改文件)都将被删除,包括其任何子目录和文件。例如,/lib很有可能超过30天……谁说过要在“/”noone中运行它,尤其是你,我知道。但我担心,在不了解所有含义的情况下阅读的人可能会在敏感的道路上尝试它。这只是对他们的警告。