Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何递归所有子目录,其中只有一个文件_Shell - Fatal编程技术网

Shell 如何递归所有子目录,其中只有一个文件

Shell 如何递归所有子目录,其中只有一个文件,shell,Shell,我如何从一个目录中递归删除其所有子目录,其中只有一个文件,并且文件名包含关键字“DEL”,并且该文件是在2017年之前创建的? 谢谢。这可能是不可能的,但您至少可以接近它: 其思想是使用find遍历所有目录。查看-type标志,以便find仅拾取目录 使用find的-exec选项,您可以传递一个程序的名称,该程序将检查这是否是要删除的目录。我不确定现在删除它是否安全(我想是的),或者它是否会打乱find(在这种情况下,您只需将目录的路径打印到stdout,以便调用find的脚本可以删除它),所以

我如何从一个目录中递归删除其所有子目录,其中只有一个文件,并且文件名包含关键字“DEL”,并且该文件是在2017年之前创建的?
谢谢。

这可能是不可能的,但您至少可以接近它:

其思想是使用
find
遍历所有目录。查看
-type
标志,以便
find
仅拾取目录

使用
find
-exec
选项,您可以传递一个程序的名称,该程序将检查这是否是要删除的目录。我不确定现在删除它是否安全(我想是的),或者它是否会打乱
find
(在这种情况下,您只需将目录的路径打印到stdout,以便调用
find
的脚本可以删除它),所以这是您必须尝试的

棘手的部分是确定这是否是要删除的目录。查找目录中的文件数可以通过不同的方式完成,这取决于您使用的“检查程序”的编程语言

匹配文件名很简单

如果您使用的是Linux或Unix,则无法找到创建日期,因为它不存储在任何地方。您可以得到的最接近的是inode更改时间。如果您在Windows上,您可以找到创建日期