如何在Bash命令行删除不同子目录下的同名文件夹?
删除各子目录下的node_modules文件夹方案
你试的~Projects rm -r */node_modules命令有两处问题:
- 路径写法不对,
~Projects不是合法路径,正确的用户目录下Projects路径应该是~/Projects(波浪号后要加斜杠); - 要是当前不在Projects目录里,
*/node_modules的通配符没法匹配到Projects下的子目录,因为通配符是基于当前工作目录生效的。
下面给你几个可行的解决方法:
方法一:先进入目标目录再操作
直接执行这行命令,先切换到Projects目录再删除所有一级子目录里的node_modules:
cd ~/Projects && rm -r */node_modules
方法二:用绝对路径直接执行
不用切换目录,直接通过绝对路径定位目标,一步到位:
rm -r ~/Projects/*/node_modules
这里~/Projects/*会匹配Projects下所有直接子目录,加上/node_modules就精准指向要删除的文件夹。
方法三:处理深层嵌套的node_modules(可选)
如果之后遇到深层嵌套的node_modules(不只是一级子目录下的),可以用find命令递归查找并删除:
find ~/Projects -name "node_modules" -type d -exec rm -r {} +
- 简单说明:
-name "node_modules"指定要找的文件夹名称,-type d限定只查找目录,-exec rm -r {} +对找到的每个目录执行删除操作。
内容的提问来源于stack exchange,提问作者ahmetturknet
相关产品推荐
相关产品推荐

