在Linux中,如何删除在文件夹层次结构中嵌套的某个名称的文件夹?

以下路径是在一个文件夹下,我想删除所有名为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命令?


当前回答

我有100多个文件

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

以上答案对我不起作用

但是下面的命令帮助了我。

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

我给出- as。所以它会删除以log-开头的文件和文件夹

rm -rf递归删除文件夹,即使它有文件。

如果你只想要文件夹

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

单独文件

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

其他回答

另一个:

"-exec rm -rf {} \;" can be replaced by "-delete"

find -type d -name __pycache__ -delete      # GNU find
find . -type d -name __pycache__ -delete    # POSIX find (e.g. Mac OS X)

使用find查找名称“a”,并执行rm根据您的意愿删除名称,如下所示:

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

首先使用ls来测试它:

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

为了确保只删除目录而不是普通文件,使用"-type d"参数(正如注释中建议的那样):

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

“{}”是对找到的每个文件“a”的替换——exec命令通过替换对每个文件执行。

这也可以工作-它将删除所有名为“a”的文件夹及其内容:

rm -rf `find . -type d -name a`

如果目标目录为空,使用find,只过滤目录,按名称过滤,执行rmdir:

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

如果你想递归删除它的内容,替换-exec rmdir {} \;使用-delete或-prune -exec rm -rf {} \;其他答案包括关于这些版本的细节,也要给它们署名。

find ./ -name "FOLDERNAME" | xargs rm -Rf

应该能行。警告,如果你不小心抽。或/ into xargs rm -Rf您的整个计算机将被删除,没有选项可以恢复,需要重新安装操作系统。