我有多个npm项目保存在本地目录。现在我想在没有node_modules文件夹的情况下备份我的项目,因为它占用了很多空间,也可以在任何时候使用npm install进行检索。

那么,使用命令行接口从指定路径递归删除所有node_modules文件夹的解决方案是什么呢?


当前回答

在Bash中,可以简单地使用

rm -rf node_modules **/node_modules

其他回答

我想到了这个解决方案,

首先使用find查找文件夹并指定文件夹名称。 递归执行删除命令-exec rm -rf '{}' +

使用实例递归删除文件夹

查找/path -type d -name "node_modules" -exec rm -rf '{}' +

在Bash中,可以简单地使用

rm -rf node_modules **/node_modules

Bash函数删除node_modules。它将递归地从当前工作目录中删除所有node_modules目录, 打印时找到路径。

你只需要在你的$PATH中输入

rmnodemodules(){

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

}

打印出要删除的目录列表:

find . -name 'node_modules' -type d -prune

删除当前工作目录下的目录:

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +

或者你也可以使用trash (brew install trash)进行分阶段删除:

find . -name node_modules -type d -prune -exec trash {} +

改进已被接受的答案:

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +

我发现上面的命令会运行很长时间来获取所有文件夹,然后运行删除命令。要使命令可恢复,我建议使用\;。要查看正在运行的命令的进度,使用-print查看正在删除的目录。

注意:必须先cd到根目录下才能执行该命令。或者使用find {project_directory}代替find .。

逐个删除文件夹。

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

逐个删除文件夹,并打印删除的文件夹。

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

对于喜欢交互方式的人,请参考jeckep的答案。在你想要修剪的目录下运行:

npx npkill