如何删除具有特定名称的文件夹

在Linux中,如何删除嵌套在文件夹层次结构深处的特定名称的文件夹?

下面的path是在一个文件夹下,我想删除所有名为a文件夹。

 1/2/3/a 1/2/3/b 10/20/30/a 10/20/30/b 100/200/300/a 100/200/300/b 

我应该从父文件夹使用什么Linux命令?

如果目标目录为空,则使用find,仅筛选目录,按名称筛选,执行rmdir:

 find -type d -name a -exec rmdir {} \; 

如果要recursion删除其内容,请replace-exec rmdir {} \; 通过-delete-prune -exec rm -rf {} \; 。 其他答案还包括有关这些版本的详细信息。

使用find命名为“a”,并执行rm以删除根据您的意愿命名的命令,如下所示:

 find . -name a -exec rm -rf {} \; 

先用lstesting一下列出:

 find . -name a -exec ls {} \; 

为了确保只删除目录而不是纯文件,使用“-type d”arg(如注释中所build议的):

 find . -name a -type d -exec rm -rf {} \; 

“{}”是对每个find的文件“a”的replace – exec命令是通过replace对每个文件执行的。

这也适用 – 它将删除所有名为“a”的文件夹及其内容:

 rm -rf `find -type d -name a` 
 find ./ -name "FOLDERNAME" | xargs rm -Rf 

应该做的伎俩。 警告,如果你不小心泵了一个./进入xargs rm -Rf你的整个计算机将被删除没有一个选项让它回来,需要一个操作系统重新安装。

我有超过100个文件

 log-12 log-123 log-34 .... 

以上的答案不适合我

但下面的命令帮助了我。

 find . -name "log-*" -exec rm -rf {} \; 

我给-type作为. 所以它删除了以log-

rm -rfrecursion删除文件夹,即使它有文件。

如果你想单独的文件夹

 find -type d -name "log-*" -exec rm -rf {} \; 

文件单独

 find -type f -name "log-*" -exec rm -rf {} \; 

要删除名称为foo所有目录,请运行:

 find -type d -name foo -a -prune -exec rm -rf {} \; 

其他答案缺less一个重要的事情: -prune选项。 如果没有-prune ,GNU find将删除名称匹配的目录,然后尝试caching它以查找更多匹配的目录。 -prune选项告诉它不recursion到符合条件的目录。

另一个:

 "-exec rm -rf {} \;" can be replaced by "-delete" find -type d -name __pycache__ -delete # GNU find find . -type d -name __pycache__ -delete # POSIX find (eg Mac OS X) 

find path / to / the / folders -maxdepth 1 -name“my_ *”-type d -delete