如何删除具有某个名称的文件夹

问题描述 投票:0回答:11
在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命令?

linux unix rm
11个回答
295
投票
如果目标目录为空,请使用查找,仅用目录过滤,用名称过滤,执行rmdir:

find . -type d -name a -exec rmdir {} \;
如果您想递归删除其内容,请用

-exec rmdir {} \;

-delete
替换。其他答案还包括有关这些版本的详细信息,也将其归功于它们。
    
使用name“ a”并执行RM以根据您的愿望删除那些,如下所示:


268
投票

首先使用LS列出的测试:

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

为了确保仅删除目录而不是普通文件,请使用“ -type d” arg(如评论中建议):

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

“ {}”是每个文件的替换”。


这也有效 - 它将删除所有称为“ A”及其内容的文件夹:


121
投票

我最终在这里希望删除我的
rm -rf `find . -type d -name a`
文件夹,然后再对我的工作进行备份。一个关键要求是

72
投票
文件夹可以嵌套,因此您需要

rsync

选项。
首先,我首先运行此操作以在视觉上验证要删除的文件夹:
node_modules
然后我运行此删除所有内容:
-prune
thanks topistache

用名称
find . -type d -name node_modules -prune

删除所有目录,运行:

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

其他答案缺少一个重要的事情:

foo

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

,GNU Find将使用匹配名称删除目录,然后尝试重新浏览以查找匹配的更多目录。

-prune
选项告诉它不要重复进入与条件相匹配的目录。


该命令对我有用。它递归地完成工作

-prune
。 - 当前文件夹

“ node_modules”  - 文件夹名称


23
投票
-prune

应该解决这个问题。 警告,如果您不小心将A
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +

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

泵入

.

,则将删除整个计算机,而无需选择将其删除,需要重新安装OS。

16
投票
纠正多个答案,这是一个在Linux和Macos
上都起作用的命令

/

    
我有100多个文件,例如
xargs rm -Rf
Above答案对我不起作用


16
投票
rm -rf $(find . -type d -name __pycache__)

I给出了
log-12
log-123
log-34
....
,因此它删除了以

13
投票

的文件和文件夹的删除文件夹

-type
递归删除文件夹,即使它具有文件。

如果您只想要文件夹

.

单独使用

log-


另一个:
rm -rf
    

earlier评论对我不起作用,因为我在结构中的某个文件夹中寻找一个文件夹名称中的表达式

以下在类似结构中的文件夹中工作:

B/D/AB/CD/文件或C/D/E/F/F/F/File

在使用RM-RF
之前检查一下

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

用递归内容的文件夹删除文件夹

7
投票

一种更简单的方法是管道命令

4
投票

此命令将删除所有技巧文件夹

找到路径/to//the/文件夹-maxDepth 1 -Name“ my_*” -type d-delete

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.