在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中,如何删除文件夹层次结构中嵌套的特定名称的文件夹?如何删除特定名称的文件夹
下面的路径在一个文件夹下,我想删除名为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命令?
如果目标目录是空的,使用发现,只有目录,过滤器过滤器按名称,执行命令rmdir:
find -type d -name a -exec rmdir {} \;
如果你想递归地删除它的内容,通过-delete
或-prune -exec rm -rf {} \;
更换-exec rmdir {} \;
。其他答案包括有关这些版本的详细信息,也可以相信。
使用查找名为“a”和执行rm以删除按照你的意愿的命名,具体如下:首先使用LS
find . -name a -exec rm -rf {} \;
测试列出:
find . -name a -exec ls {} \;
为了确保这只会删除目录而不是纯文件,请使用“-type d”参数(如注释中所示):
find . -name a -type d -exec rm -rf {} \;
“{}”是对每个找到的文件“a”的替换 - 通过替换对每个文件执行exec命令。
find ./ -name "FOLDERNAME" | xargs rm -Rf
应该这样做。警告,如果您不小心将.
或/
泵入xargs rm -Rf
,您的整个计算机将被删除,但没有选项将其取消,需要重新安装操作系统。
这一个适合我,thx! – DarkteK
哦,只是那个小小的风险。这就是全部?哈哈。非常感谢您的警告。我肯定会犯这种打字错误。 – TinkerTenorSoftwareGuy
这也适用 - 它会删除所有名为“a”和其内容的文件夹:
rm -rf `find -type d -name a`
这是唯一实际工作的人。 – Buffalo
@Buffalo,怎么样?这个defo的作品,但其他人也是如此。会惊讶地发现一个env在哪里工作,但其他人没有给出所有的答案基本上是'find/rm'。 – wmorrison365
@ wmorrison365因为如果你做'找。 -name a -exec rm -rf {} \;',当它试图进入那个目录来寻找更多的项目时会发现崩溃,给你一个错误,比如'find:'1/2/3/a':No such文件或目录“。 –
我有超过100个文件,如
log-12
log-123
log-34
....
以上的答案对我来说没有工作
但下面的命令帮助了我。
find . -name "log-*" -exec rm -rf {} \;
我给-type
为.
所以它删除与log-
和rm -rf
开始删除文件夹递归即使它有文件文件和文件夹。
find -type d -name foo -a -prune -exec rm -rf {} \;
其他的答案是缺少一个重要的:如果你想单独的文件夹单独
find -type d -name "log-*" -exec rm -rf {} \;
文件
find -type f -name "log-*" -exec rm -rf {} \;
要删除名为foo
的所有目录,运行
事情:-prune
选项。如果没有-prune
,GNU find将删除名称匹配的目录,然后尝试缓存到目录中以查找更多匹配的目录。 -prune
选项告诉它不递归到符合条件的目录中。
还有一句:
"-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)
查找路径/到/的/文件夹-maxdepth 1个-name “MY_ *” 型Ð-delete
你可能想增加一个 “型d”在那里只需要一个文件匹配相同的名称。 –
另外请注意,这将会产生类似'1/2/a/3/4'的情况,这可能不是有意的,所以建议先+1测试... – twalberg
reco'echo {}'先测试它,而不是'ls {}' – charneykaye