如何删除具有特定名称的文件夹
在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 -rf
recursion删除文件夹,即使它有文件。
如果你想单独的文件夹
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