我有多个npm项目保存在本地目录。现在我想在没有node_modules文件夹的情况下备份我的项目,因为它占用了很多空间,也可以在任何时候使用npm install进行检索。
那么,使用命令行接口从指定路径递归删除所有node_modules文件夹的解决方案是什么呢?
我有多个npm项目保存在本地目录。现在我想在没有node_modules文件夹的情况下备份我的项目,因为它占用了很多空间,也可以在任何时候使用npm install进行检索。
那么,使用命令行接口从指定路径递归删除所有node_modules文件夹的解决方案是什么呢?
当前回答
注:这只是对已接受答案的改进,请先使用已接受答案。
如果你觉得无聊,那就继续读下去。
基本上,这个命令在99%的情况下都可以正常工作
找到。-name 'node_modules' -type d -prune -exec rm -rf '{}' +
我注意到通过命令行删除文件比通过Finder删除文件夹要长(当从Finder删除时,它会将文件夹移动到~/。垃圾目录)。
所以如果你想把node_modules移动到~/。垃圾箱,然后你可以尝试
找到。- name ' node_modules类型d修剪- sh - c的mv - f“$ 1”“(dirname " $ 1 ") /美元(basename $(目录名" $ 1 "))_美元(basename“$ 1”)”& & mv“$(目录名" $ 1 ")/ $ (basename $(目录名" $ 1 "))_美元(basename“$ 1”)”~ /。垃圾/' sh {} \;
如你所见,它由两部分组成。
找到。-name 'node_modules' -type d -prune查找所有node_module的dirs - sh - c的mv - f“$ 1”“(dirname " $ 1 ") /美元(basename $(目录名" $ 1 "))_美元(basename“$ 1”)”& & mv“$(目录名" $ 1 ")/ $ (basename $(目录名" $ 1 "))_美元(basename“$ 1”)”~ /。垃圾/' sh {} \;重命名node_module,加上它的父文件夹名前缀,并将其移动到Trash
在我
~/Development/angular-projects
┣ project1
┣ project2
┗ project3
运行命令后
~/.Trash
┣ ~project1_node_modules
┣ ~project2_node_modules
┗ ~project3_node_modules
然后确保清空垃圾
或打开空垃圾功能
其他回答
我想到了这个解决方案,
首先使用find查找文件夹并指定文件夹名称。 递归执行删除命令-exec rm -rf '{}' +
使用实例递归删除文件夹
查找/path -type d -name "node_modules" -exec rm -rf '{}' +
在Bash中,可以简单地使用
rm -rf node_modules **/node_modules
打印出要删除的目录列表:
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 {} +
Bash函数删除node_modules。它将递归地从当前工作目录中删除所有node_modules目录, 打印时找到路径。
你只需要在你的$PATH中输入
rmnodemodules(){
find . -name 'node_modules' -type d -prune -exec echo '{}' \; -exec rm -rf {} \;
}
从多个项目中删除node_modules文件夹。只需将它放在包含多个项目的项目文件夹中并运行它。
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)