使用命令行从指定路径递归删除node_modules文件夹

时间:2017-03-22 11:34:57

标签: bash macos command-line-interface node-modules

我有多个npm项目保存在本地目录中。现在我想在没有node_modules文件夹的情况下备份我的项目,因为它占用了大量空间,并且可以随时使用npm install检索。

因此,我需要一个解决方案,使用命令行界面从指定路径递归删除所有node_modules文件夹。 任何建议/帮助都非常值得赞赏。

10 个答案:

答案 0 :(得分:96)

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

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

从当前工作目录中删除目录:

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

或者,您可以使用trashbrew install trash)进行暂存删除:

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

答案 1 :(得分:7)

我遇到过这个解决方案,

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

运行以下命令以递归方式删除文件夹

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

答案 2 :(得分:7)

改善接受的答案,

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

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

注意:您必须先cd进入根目录,然后运行命令,或者使用find .代替find {project_directory}

要一一删除文件夹

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

要一一删除文件夹并打印要删除的文件夹

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

答案 3 :(得分:4)

尝试 https://github.com/voidcosmos/npkill

npx npkill

它将找到所有node_modules并允许您将其删除。

npkill

答案 4 :(得分:1)

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

您只需要将$PATH中的某个地方放进去

rmnodemodules(){

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

}

答案 5 :(得分:0)

这真的很好

find . -name "node_modules" -exec rm -rf '{}' +

答案 6 :(得分:0)

在Windows上,我使用以下.BAT文件从当前文件夹中递归删除node_modules

@for /d /r . %d in (node_modules) do @if exist %d (echo %d && rd %d /s /q) 

或者通过CMD.EXE

cmd.exe /c "@for /d /r . %d in (node_modules) do @if exist %d (echo %d && rd %d /s /q)"

答案 7 :(得分:0)

从多个项目中删除 node_modules 文件夹的 Python 脚本。只需将它放在包含多个项目的项目文件夹中并运行它。

import os
import shutil
dirname = '/root/Desktop/proj' #Your Full Path of Projects Folder
dirfiles = os.listdir(dirname)

fullpaths = map(lambda name: os.path.join(dirname, name), dirfiles)

dirs = []

for file in fullpaths:
    if os.path.isdir(file): dirs.append(file)

for i in dirs:
    dirfiles1 = os.listdir(i)
    fullpaths1 = map(lambda name: os.path.join(i, name), dirfiles1)
    dirs1 = []
    for file in fullpaths1:
        if os.path.isdir(file):
            dirs1.append(file)
            if(file[-12:]=='node_modules'):
                shutil.rmtree(file)
                print(file)
    

答案 8 :(得分:0)

操作系统:Ubuntu

删除服务器中所有 node_modules 的简单技巧(可以减少大量空间)是运行:

sudo find / -not -path "/usr/lib/*" -name 'node_modules' -type d -prune -exec rm -rf '{}' + 

这里我们需要排除/usr/lib/*,因为如果你不这样做,它会删除你的npm,你需要重新安装它:)

答案 9 :(得分:0)

如果你想移动而不是删除它:

find . -name 'node_modules' -type d -prune -exec mkdir -p ./another/dir/{} \; -exec mv -i {} ./NODE_MODULES/{} \;

这将保持目录结构。