【VSCode】一键清理旧版本插件脚本(Mac或者Windows都可)

文章目录

  • 清理VSCode旧版本插件
    • 为什么会有旧版本插件
    • Mac 环境
      • 脚本源码
      • 原理解释
      • 实例解释
    • Windows 环境

清理VSCode旧版本插件

为什么会有旧版本插件

vscode 插件经常需要更新的,有时候更新之后旧版本的插件还是会留存在插件文件夹中(更新插件之后vscode并不会删除旧版本插件),路径一般是.vsode/extensions ,如果插件很多,也经常更新就会出现很多旧版本的插件不断留存在插件文件夹中,这有点占存储,其实说到底 vscode 在更新插件之后存在一点瑕疵——没有删除老版本插件

Mac 环境

脚本源码

#!/bin/bash
EXTENSIONS_DIR="$HOME/.vscode/extensions"
EXTENSIONS_DIR="$HOME/Desktop/DCTG/test"
if [ -d "$EXTENSIONS_DIR" ]; thencd "$EXTENSIONS_DIR" || exit# 查找所有插件,按发布者和插件名分组find . -maxdepth 1 -type d -name "*.*" | sed 's/\.\///' | while read -r dir; do# 提取插件名称部分(发布者.插件名)# echo "### check dir ### $dir"plugin=$(echo "$dir" | sed -E 's/(-[0-9]+\.[0-9]+(\.[0-9]+)?(-.*)?)$//')# echo "### check plugin ### $plugin"if [ "$plugin" = "." ]; thencontinuefi# 查找该插件的所有版本,并按版本号排序versions=$(find . -maxdepth 1 -type d | grep -E "$plugin-[0-9]+\.[0-9]+\.[0-9]+" | sed 's/\.\///' | sort -Vr)# 如果有多于一个版本,则删除旧版本if [ "$(echo "$versions" | wc -l)" -gt 1 ]; thenecho "Cleaning up old versions of $plugin ..."echo "$versions" | tail -n +2 | xargs rm -rfecho "Done."fidone
elseecho "VSCode extensions directory not found: $EXTENSIONS_DIR"
fi

原理解释

  1. 首先 find 所有文件夹: find . -maxdepth 1 -type d -name "*.*" | sed 's/\.\///' | while read -r dir;
  2. 其次提取 [发布者].[插件名].[版本] 中的 [发布者].[插件名]plugin=$(echo "$dir" | sed -E 's/(-[0-9]+\.[0-9]+(\.[0-9]+)?(-.*)?)$//')
  3. 再次查找该插件的所有版本并逆序排一下:versions=$(find . -maxdepth 1 -type d | grep -E "$plugin-[0-9]+\.[0-9]+\.[0-9]+" | sed 's/\.\///' | sort -Vr)
  4. 删除旧版本插件文件夹: echo "$versions" | tail -n +2 | xargs rm -rf

实例解释

举个例子,假设插件文件夹下面有如下文件夹:

github.copilot-chat-0.24.0
github.copilot-chat-0.24.1
github.copilot-chat-0.24.2
  • 第一步和第二步处理之后得到 plugin = github.copilot-chat
  • 第三步处理之后得到逆序
    github.copilot-chat-0.24.2
    github.copilot-chat-0.24.1
    github.copilot-chat-0.24.0
    
  • 第四步处理:
    • echo "$versions" | tail -n +2
      github.copilot-chat-0.24.1
      github.copilot-chat-0.24.0
      
    • xargs rm -rf 直接删除 0.24.0 和 0.24.1

Windows 环境

没测试过,通过 deepseek 转换 bash 脚本生成

@echo off
setlocal enabledelayedexpansion:: 设置 VSCode 扩展目录
set "EXTENSIONS_DIR=%USERPROFILE%\.vscode\extensions":: 检查目录是否存在
if not exist "%EXTENSIONS_DIR%" (echo VSCode extensions directory not found: %EXTENSIONS_DIR%exit /b 1
):: 遍历所有插件目录
cd /d "%EXTENSIONS_DIR%"
for /d %%d in (*.*) do (set "dir=%%d":: 提取插件名称(去掉版本号)for /f "tokens=1,2 delims=-" %%a in ("!dir!") do (set "plugin=%%a"set "version=%%b"):: 跳过无效目录if "!plugin!"=="" (echo Skipping invalid directory: !dir!goto :next):: 查找该插件的所有版本set "versions="for /f "delims=" %%v in ('dir /b /ad "!plugin!-*" ^| findstr /r /c:"^!plugin!-[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"') do (set "versions=!versions!%%v"$REMOVE$):: 按版本号排序(降序)set "sorted="for /f "tokens=1* delims=." %%a in ('(for %%v in (!versions!) do @echo %%v^) ^| sort /r') do (set "sorted=!sorted!%%a.%%b "):: 删除旧版本set "count=0"for %%v in (!sorted!) do (set /a "count+=1"if !count! gtr 1 (echo Deleting old version: %%vrmdir /s /q "%%v")):next
)
echo Cleanup completed.
endlocal

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/20468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ介绍以及基本使用

文章目录 一、什么是消息队列? 二、消息队列的作用(优点) 1、解耦 2、流量削峰 3、异步 4、顺序性 三、RabbitMQ基本结构 四、RabbitMQ队列模式 1、简单队列模式 2、工作队列模式 3、发布/订阅模式 4、路由模式 5、主题模式 6、…

【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

基于SpringBoot+Vue的在线电影购票系统的设计与实现

获取源码:SpringBootVue的在线电影购票系统: 用户:登录、注册、忘记密码、主页、猜你想看、电影详情、选座购票、正在热映、即将上映、影院、排行榜、影视快报、平台公告、个人中心、我的收藏、想看、改签、评论、排行等功能管理员:登录、首页…

LabVIEW无刷电机控制器检测系统

开发了一种基于LabVIEW的无刷电机控制器检测系统。由于无刷电机具有高效率、低能耗等优点,在电动领域有取代传统电机的趋势,而无刷电机的核心部件无刷电机控制器产量也在不断增长。然而,无刷电机控制器的出厂检测仍处于半自动化状态&#xff…

C#功能测试

List 内部元素为引用 src[0]为"11" List<Source> src new List<Source>(); src.Add(new Source() { Name "1", Age 1, Description "1" }); src.Add(new Source() { Name "2", Age 2, Description "2"…

八种单例模式详解

亲爱的朋友们&#xff0c;大家好&#xff01; 今天是 CSDN博客之星 投票的开始日&#xff01;非常感谢你们在过去的时间里给予我无私的支持和鼓励&#xff0c;这一路走来&#xff0c;正是因为有你们的帮助&#xff0c;我才能不断进步&#xff0c;走得更远。 目前&#xff0c;…

STM32 PWM脉冲宽度调制介绍

目录 背景 PWM 模式 影子寄存器和预装载寄存器 PWM对齐模式 PWM 边沿对齐模式 向上计数配置 向下计数的配置 PWM 中央对齐模式 程序 第一步、使能GPIOB组、AFIO、TIM3外设时钟 第二步、输出通道端口配置​编辑 第三步、定时器配置产生频率 第四步、PWM输出配置 第…

Java面试第二山!《计算机网络》!

在 Java 面试里&#xff0c;计算机网络知识是高频考点&#xff0c;今天就来盘点那些最容易被问到的计算机网络面试题&#xff0c;帮你轻松应对面试&#xff0c;也方便和朋友们一起探讨学习。 一、HTTP 和 HTTPS 的区别 1. 面试题呈现 HTTP 和 HTTPS 有什么区别&#xff1f;在…

deepseek-v3在阿里云和腾讯云的使用中的差异

随着deepseek在各大云商上线&#xff0c;试用了下阿里云和腾讯云的deepseek服务&#xff0c;在回答经典数学问题9.9和9.11谁大时&#xff0c;发现还是有差异的。将相关的问题记录如下。 1、问题表现 笔者使用的openai的官方sdk go-openai。 因本文中测验主要使用阿里云和腾讯…

蓝桥杯单片机基础部分——单片机介绍部分

前言 这个部分是额外的&#xff0c;我看我有的学弟学妹基础比较差&#xff0c;对板子上面的模块不太熟悉&#xff0c;这里简单的介绍一下 蓝桥杯单片机 这个就是蓝桥杯单片机的板子&#xff0c;它的主控芯片是&#xff08;IAP15F2K61S2&#xff09;&#xff0c;这里就对他常用…

百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元

在当今数字化时代&#xff0c;搜索引擎作为互联网信息获取的核心工具&#xff0c;正经历着前所未有的变革。据悉&#xff0c;2025年2月16日&#xff0c;百度搜索和文心智能体平台宣布全面接入DeepSeek和文心大模型的最新深度搜索功能&#xff0c;搜索用户可免费使用DeepSeek和文…

redis解决高并发看门狗策略

当一个业务执行时间超过自己设定的锁释放时间&#xff0c;那么会导致有其他线程进入&#xff0c;从而抢到同一个票,所有需要使用看门狗策略&#xff0c;其实就是开一个守护线程&#xff0c;让守护线程去监控key&#xff0c;如果到时间了还未结束&#xff0c;就会将这个key重新s…

【koa】05-koa+mysql实现数据库集成:连接和增删改查

前言 前面我们已经介绍了第二阶段的第1-4点内容&#xff0c;本篇介绍第5点内容&#xff1a;数据库集成&#xff08;koamysql&#xff09; 也是第二阶段内容的完结。 一、学习目标 在koa项目中正常连接数据库&#xff0c;对数据表进行增删改查的操作。 二、操作步骤 本篇文章…

aws(学习笔记第二十八课) aws eks使用练习(hands on)

aws(学习笔记第二十八课) 使用aws eks 学习内容&#xff1a; 什么是aws eksaws eks的hands onaws eks的创建applicationeks和kubernetes简介 1. 使用aws eks 什么是aws eks aws eks的概念 aws eks是kubernetes在aws上包装出来 的新的方式&#xff0c;旨在更加方便结合aws&…

IM聊天系统架构实现

一、IM系统整体架构 二、企业级IM系统如何实现心跳与断线重连机制&#xff1b; 1、重连机制&#xff08;服务端下线&#xff09; 服务端下线&#xff0c;客户端netty可以感知到&#xff0c;在感知的方法中进行重连的操作&#xff0c;注意重连可能连接到旧的服务器继续报错&…

Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)

KubeadmContainerd部署k8s(v1.28.2)集群&#xff08;非高可用版&#xff09; KubeadmContainerd部署k8s高可用版本 文章目录 KubeadmContainerd部署k8s(v1.28.2)集群&#xff08;非高可用版&#xff09;一.环境准备1.服务器准备2.环境配置3.设置主机名4.修改国内镜像源地址5.配…

HarmonyOS进程通信及原理

大家好&#xff0c;我是学徒小z&#xff0c;最近在研究鸿蒙中一些偏底层原理的内容&#xff0c;今天分析进程通信给大家&#xff0c;请用餐&#x1f60a; 文章目录 进程间通信1. 通过公共事件&#xff08;ohos.commonEventManager&#xff09;公共事件的底层原理 2. IPC Kit能…

移动通信发展史

概念解释 第一代网络通信 1G 第二代网络通信 2G 第三代网络通信 3G 第四代网络通信 4G 4g网络有很高的速率和很低的延时——高到500M的上传和1G的下载 日常中的4G只是用到了4G技术 运营商 移动-从民企到国企 联通-南方教育口有人 电信 铁通&#xff1a;成立于 2000 年…

CAS单点登录(第7版)10.多因素身份验证

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 多因素身份验证 概述 多因素身份验证 &#xff08;MFA&#xff09; 多因素身份验证&#xff08;Multifactor Authentication MFA&#xff09;是一种安全机制&#xff0c;要求用户提供两种…

#渗透测试#批量漏洞挖掘#Fastjson 1.2.24 远程命令执行漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 Fastjson 1.2.24 远程命令执行漏洞综合分析…