首页 > 系统 > Linux > 正文

Linux通过Bash中删除“指定文件外的所有文件”方法

2024-08-27 23:58:54
字体:
来源:转载
供稿:网友

在 Linux 下,如何 删除目录中除某些指定文件之外的所有文件?以下是笔者整理的三个方法:模式匹配法,置变量法,find 搜索法.

假设要删除 ~/Downloads 目录中除 *.iso 和 *.zip 外的所有文件,那么在 bash 中可以按以下方法处理.

方法1:模式匹配法

  1. -s extglob # 确认开启 extglob 选项 
  2. cd ~/Downloads 
  3. rm -v !(*.iso|*.zip) 

!(pattern list) 的作用是匹配除 pattern list 之外 的文件.

方法2:设置变量法

在 bash 中,GLOBIGNORE 可用来设置要忽略的模式匹配 文件,多个模式通过:分隔.

  1. cd ~/Downloads 
  2. export GLOBIGNORE=*.zip:*.iso 
  3. rm -v * 
  4. unset GLOBIGNORE 

方法3:find 搜索法

熟悉 find 的朋友想必知道,find 的威力异常强大,因此 利用它也可解决此问题.

  1. cd ~/Downloads 
  2. find . -type f -not ( -name '*.zip' -or -name '*.iso' ) -delete 

不过还是要提醒大家,rm 操作是非常危险的,切勿炫技,如果你不放心,那么可以先老老实实的逐个或分批删除,也要比事后找回方便的多.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表