Linux 多种方法 删除目录

12 篇文章 0 订阅

Linux 多种方法 删除目录

1. 清理机器空间是(适用于大量删除)

rsync -av --delete /temp/null  /repo

2.删除一个目录下部分类型之外的文件,采用逆向思维

有三种思路:

①. 使用 ls | grep -v “xxx” 进行筛选;

②. 开启反选 shopt -s extglob;

③. 通过 bash 中的GLOBIGNORE 变量删除文件(最后一种方法只适用于 bash,GLOBIGNORE 变量存储了一个路径名 展开 pathnameexpansion 功能的忽略模式(或文件名)列表,以冒号分隔)

④. find 结合 管道符

举例说明:
如下,我需要删除除了test.sh 之外的所有文件

2.1 执行 ls | grep -v “test.sh” | xargs rm -rf

[Linux]# ls
[Linux]# a.txt b.txt c.txt test1.txt test.txt
[Linux]# ls | grep -v "test.sh" | xargs rm -rf
[Linux]# ls
test.txt

2.2 开启 反选 shopt -s extglob(扩展:如果要保留多个,grep -v “X*”,或者在反选括号内 用 | 隔开。支持迷糊匹配等。)

[Linux]#  shopt -s extglob
[Linux]# touch  a.txt  b.txt  c.txt 
[Linux]# ls 
a.txt  b.txt  test.sh
[Linux]#  rm -rf !(test.sh)
[Linux]#  ls
test.sh

2.3 通过 bash 中的GLOBIGNORE 变量删除文件

为了使用这种方法,切换到 要删除文件的目录,像下面这样设置 GLOBIGNORE 变量:

[Linux]#  cd test
[Linux]# GLOBIGNORE=*.odt:*.iso:*.txt
# 在这种情况下,除了 *.odt:*.iso:*.txt 之外的所有文件,都将从当前目录中 删除
[Linux]#  rm -v *
# 关闭 GLOBIGNORE 变量
[Linux]# unsetGLOBIGNORE
[Linux]#

2.4 使用 Linux 下的 find 命令 删除文件

这种 方法,我们可以使用 find 命令 的适当选项 或者 采用 管道符 配合 xargs 命令,公式如下:
find /deirectory/ -type f -name 'PATHERN' -delete
find /deirectory/ -type f -name 'PATHERN' -print0 | xargs -0 -i {}rm {}
find /deirectory/ -type f -name 'PATHERN' -print0 | xargs -0 -i {}rm [options] {}

# 示例如下:
# 删除当前目录下的除了  .zip  之外的 所有的文件
find  ./ -type f -not  -name '*.zip' -delete
使用 管道 和 xargs,删除所有 的 HTML 文件:
find  ./  -type f -name '*.html' -print0 | xargs -0 -i {} rm -rf {}

# 删除掉 当前目录下 的 除了 .gz 、 .odt 、.jpg 之外的所有文件
find  ./ -type f -not \( -name '*.gz'  or -name    '*.odt'   or -name    '*.jpg'  \) -delete
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值