我有多个npm项目保存在本地目录中。现在,我要备份不带node_modules
文件夹的项目,因为它占用了大量空间,并且可以随时使用进行检索npm install
。
因此,我需要一种使用命令行界面从指定路径递归删除所有node_modules文件夹的解决方案。任何建议/帮助都是高度赞赏的。
Answers:
打印出要删除的目录列表:
find . -name 'node_modules' -type d -prune
从当前工作目录中删除目录:
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
另外,您可以使用垃圾桶(brew install trash
)进行阶段删除:
find . -name node_modules -type d -prune -exec trash {} +
/node_modules/gulp-server-livereload/node_modules: Directory not empty
了很多“内部” node_modules文件夹。如何解决这个问题?
'{}' +
?
{}
是一个占位符,它将find
替换为找到的文件路径。+
告诉find
将所有文件路径附加到单个命令,而不是rm
为每个命令运行。
改善已接受的答案,
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
我发现该命令将运行很长时间来获取所有文件夹,然后运行delete命令,以使该命令可恢复,我建议使用\;
该命令,并查看正在运行的命令的进度,-print
以查看要删除的目录。
注意:您必须首先cd
进入根目录,然后运行命令或代替find .
usefind {project_directory}
一对一删除文件夹
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \;
逐个删除文件夹并打印要删除的文件夹
find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;
编辑:
对于喜欢以交互方式执行此操作的人员,请参阅@jeckep答案,在您希望修剪的目录中运行此命令。
npx npkill
-prune
是一项重要的优化。它将发现不会递归到node_module
目录中(以查找嵌套的node_modules)