【Linux】CentOS7上rpm命令批量卸载删除模糊rpm包名

例如,我要删除如下文件名匹配上wine的所有文件

如果单独rpm删除卸载一个rpm包的话,命令如下:

rpm -evh --nodeps wine-common-1.8.6-1.el7.noarch

-e                   卸载

-vh                   合在一起使用,展示详细信息和进度条

--nodeps               不用查找其他依赖,直接卸载这个

wine-common-1.8.6-1.el7.noarch         文件名,从上面复制下来的

 

但是,上面这个wine打头的文件实在是很多,不想一个一个卸载,怎么办了?

1.首先vim命令新建并打开一个文件

vim uninstall

粘贴如下文本:

进入之后,键盘i进入编辑模式,粘贴下面的话

#!/bin/bash

################################################################
#
#  function: batch uninstall rpm packages
#  setup:
#         1. copy the scripts and save as a file, such as: ex.sh
#         2. switch to root user. su - root
#         3. change the file's permission: chmod +x ex.sh
#         3. running the script with no parameter: ./ex.sh
#  runing:
#        uninstall [rpm package name]
#  author: Topurce Zhou (topurce#at#hotmail.com)
#
################################################################

if [ "$UID" -ne 0 ]
then
    echo -e 'must be \E[34m\033[1mroot\033[0m to run this script.'
    echo -ne '\E[0m'
    exit 67
fi

if [ ! -f /usr/bin/uninstall ]
then
   echo "building file..."
   scripts="$(cat $0)"
   declare -i index=1
   cat $0 | while read line
   do
       if (( index == 19 ))
       then
          echo 'echo -e "must be \E[34m\033[1mroot\033[0m to run this script."'>>/usr/bin/uninstall
          echo 'echo -ne "\E[0m"'>>/usr/bin/uninstall
       elif (( index == 23 ))
       then
          echo 'stips="searching packages for \"$1\":"'>>/usr/bin/uninstall
      echo 'usage="usage: $0 \"package name\""'>>/usr/bin/uninstall
       elif (( index != 19 && index != 20 && (index<23 || index>52) ))
       then
          echo $line>>/usr/bin/uninstall
       fi
       index+=1;
   done
   chmod +x /usr/bin/uninstall
   echo "try \"uninstall [package name]\" again."
   exit
fi

stips="searching packages for \"$1\":"
usage="usage: $0 \"rpm package name\""

if [ $# -eq 0 ]
then
    echo "$0: no rpm packages given for uninstall."
    echo $usage
elif [ $# -gt 1 ]
then
    echo $usage
else
    echo $stips
    rpms="$(rpm -qa | grep $1)"
    declare -i count=0
    for rpmk in $rpms
    do
       count+=1
       echo "package: $rpmk"
    done
    if (( count == 0 ))
    then
       echo "no packages"
       exit
    fi
    echo "packages: $count"
    echo
    read -p "are you sure you want to uninstall all above packages?(y/n)"
    if [[ $REPLY == [Yy] ]]
    then
         echo "starting to uninstall packages..."
         for rpmk in $rpms
     do
         count+=1
         echo "uninstalling package: $rpmk"
             rpm -e --nodeps $rpmk
             if [ $? -eq 0 ]
             then
             echo "done"
             else
                 echo "faild to uninstall $rpmk"
             fi
      done
    fi
fi

View Code

记住,最后一行不用给回车或者换行。

粘贴完成,Esc以下,shift+Q以下,x保存退出。

 

2.接下来,修改文件权限为可执行

ls -l

查看当前文件的详细信息,包含权限

chmod +x uninstall

为uninstall文件添加x   即可操作的权限

再次查看,就可以看到uninstall文件当前已经有了可读可写可操作的权限了。

 

3.最后执行本文件

./uninstall

./文件名,就是执行本文将

可以看到

提示中,要求 在执行./uninstall文件的时候,直接在后面把rpm package name加上一起执行,注意这里的rpm包名字是模糊查询的,

【注意】:一定要注意,如果你不能确定rpm包名模糊匹配下删除的文件,涉及到linux系统的,千万不要使用此方法去批量卸载删除。

 

正因为是模糊查询的,因此本方法中是由相关提示的,你可以在下面执行过程中,查看是否不会涉及到你不想卸载的东西而决定是否继续。

上面接着,要加上rpm包名,所以执行下面的命令:

./uninstall wine

wine就是我要卸载的包名,模糊查询,出来下面的结果

上面将你即将 要卸载的文件一一列出来了,确定要批量删除的话

键入y即可。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------批量删除完成-------------------------------------------------------------------------------------------

时间: 2024-10-26 01:52:13

【Linux】CentOS7上rpm命令批量卸载删除模糊rpm包名的相关文章

【Linux】CentOS7上安装JDK 和卸载 JDK 【rpm命令的使用】

之前有过一篇在CentOS7上安装JDK的文章:http://www.cnblogs.com/sxdcgaq8080/p/7492426.html   在这里又说一次,是要使用rpm命令安装JDK的rpm包,和卸载已经安装的JDK 1.在官网下载JDK的rpm安装包 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 这里还使用了CentOS7上自带的下载工具,下载速度可以快一点,

linux的一个find命令配合rm删除某天前的文件方法_Linux

语句写法:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前带"."的文件删除 find /usr/local/backups -mtime +10 -name "*.*" -exec rm -rf {} \; find:linux的查找命令,用户查找指定条件的文件 /usr/local/backups:想要进行清理的任意目录 -

【Linux】CentOS7 上使用yum安装和卸载软件【yum安装wine举例】

关于yum的相关解释,请 man yum 自行查看. 配置常用源:http://www.cnblogs.com/sxdcgaq8080/p/7516186.html yum的使用类似于在windows系统上的应用市场去下载安装软件. 配置源就是给你提供了一个又一个的应用市场.   下面举例说明,yum安装软件和卸载   1.安装 安装键入以下命令: yum install wine wine就是你要安装的软件的名字. 具体过程如下: [sxd@localhost ~]$ su root 密码:

解压rpm包的linux命令及rpm命令使用简介_linux shell

rpm 是红帽(RedHat)软件包管理工具,实现类似于 Windows 中的添加/删除程序功能 rpm -ivh install_rpm tar xvf informix-linux.tar inux下解压命令大全 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName

Linux系统rpm命令详细解释

一.RPM的全名为"RedHat Package Manager",是由RedHat公司开发的.Rpm是以一种数据库记录的方式将所需要的套件安装到linux主机的一套管理程序 RPM主要优点: ⑴.由于已经编译完成并且打包,所以安装方便 ⑵.由于套件信息已经记录在linux主机的数据库中,方便查询.升级.卸载. RPM数据库在/var/lib/rpm RPM数据库的建立可以利用rpm --rebuilddb命令. RPM包名格式: name-version-release.arch.r

linux中rpm安装、卸载、升级Linux软件

RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rpm 包: rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息: rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度: RPM 查询操作 命令: rpm -q - 附加查询命令: a 查询所有已经安装的包以下两个附加命令用于查询安装包的信

怎样在 Arch Linux 终端上更改 WiFi 密码

自从修改了我的路由器的 WiFi 网络密码后,我的 Arch Linux 测试机就不能连接到网络了.由于我的 Arch Linux 测试机没有图形化桌面环境,我不得不在终端上更改 WiFi 密码.在图形化操作界面中,更改 WiFi 密码是很容易的.我仅仅需要打开网络管理器,就能很快更改 WiFi 网络密码.但是,我从来没有在 Arch Linux 终端上用命令行来更改 WiFi 密码.我开始在 google 上搜索相关资料,并且在 Arch Linux 论坛找到了一个好的解决办法.如果你也面临同

Linux系统上用encfs创建和管理加密文件夹

如果你想使你计算机上的某些信息免于被窥视的话,可以看看这篇文字.保护信息的一种方法就是加密你的home目录,但是一旦你登录系统后,你的home目录下的信息将暴露于外.过去,我已经写过关于怎样在你的系统上使用Cryptkeeper来创建加密的文件夹.Cryptkeeper是一个图形前端,后端是 encfs.encfs允许你创建一个加密的文件夹,然后通过FUSE来挂载作为用户文件系统.在这篇教程里,我会教你怎么在Linux系统上的命令行下面使用encfs工具来创建和管理一个加密的文件夹. 安装enc

linux下面某些常用命令的用法【转】

转自:http://blog.csdn.net/luo3532869/article/details/7584290 ls 命令用于常看目录,用法:ls [选项][目录或文件]例:使用ls命令显示/home目录下的文件与目录(不包含隐藏文件) ls /home  显示/home目录下的文件和目录 ls -a  /home显示/home目录下的所有的文件和目录,包括隐藏文件 ls -l  /home 显示/home目录下的文件和目录的详细信息,比如权限.所属用户.创建时间等等 ls -c  /ho