Linux下使用bash删除目录中的特定文件

作者: 操作系统  发布:2019-09-03

Linux下行使bash删除目录中的特定文件

自家是一名Linux新用户。以后自己急需清理二个下载目录中的文件,其实本身就算想从~/Download/文件夹删去除了以下格式的文书外所以其余文件:

  • *.iso - 全部的iso格式的文件。
  • *.zip - 有所zip格式的文本。

本身何以在贰个基于Linux,OS X 大概 Unix-like 系统上的bash shell中剔除特定的文本呢?

图片 1

Bash脚本15分钟进级教程

12个 Linux/Unix下 Bash 和 KSH shell 的作业调节实例

Ubuntu下shell脚本运转至极:Bash和dash的界别

Bash脚本之for语句if语句以及各样测量检验语句

什么是Bash Shell的内建(build in)命令

Bash shell 辅助增加的公文格局相配符举个例子:

  • * - 匹配全部的文本。
  • ? - 相配文件名中的单个字母。
  • [...] - 相称密闭括号中的任何贰个假名。

策略 #1: 见识一下恢宏的方式相称符

此地你须要用系统内置的shopt命令来开启shell中的extglob选项,然后你就足以采纳扩张的形式符了,这么些方式相配符如下:

  1. ?(方式列表) - 相配零次或二次给定的格局。
  2. *(形式列表) - 相称零次或频仍加以的情势。
  3. +(方式列表) - 至少相配一回给定的形式。
  4. @(格局列表) - 相配一回给定的格局。
  5. !(格局列表) - 不合营给定形式。

一个格局列表就是一个或四个用 | 分开的格局(文件名)。

首先要展开extgolb选项:

  1. shopt -s extglob

在Bash中删掉除.zip和.iso文件以外的享有文件

rm 命令的语法格式为:

  1. ## 仅保留 file1 文件 ##
  2. rm !(file1)
  3. ## 仅保留 file1 和 file2 文件##
  4. rm !(file1|file2)
  5. ## 仅保留 zip 文件 ##
  6. rm !(*.zip)
  7. ## 仅保留 zip 和 iso 文件 ##
  8. rm !(*.zip|*.iso)
  9. ## 你也足以行使完全的目录 ##
  10. rm /Users/vivek/!(*.zip|*.iso|*.mp3)
  11. ## 也足以传递参数 ##
  12. rm [选项]!(*.zip|*.iso)
  13. rm -v !(*.zip|*.iso)
  14. rm -f !(*.zip|*.iso)
  15. rm -v -i !(*.php)

末段,关闭 extglob 选项措施如下:

  1. shopt -u extglob

策略 #2: 使用bash的 GLOBIGNORE 变量删除内定文件以外的具有文件

摘自 bash(1) 手册页:

这是一个用冒号分开的模式列表,通过路径展开方式定义了要忽略的文件集合。如果一个匹配到路径展开模式的文件也匹配GLOBIGNORE中的模式,那么它会从匹配列表中移除。

要去除全数文件只保留 zip 和 iso 文件,应如下设置 GLOBIGNORE:

  1. ## 只在 BASH 中可行 ##
  2. cd ~/Downloads/
  3. GLOBIGNORE=*.zip:*.iso
  4. rm -v *
  5. unset GLOBIGNORE

策略 #3: 用 find 命令删除全体别的文件仅保留 zip 和 iso 文件

若是您正在选择 tcsh/csh/sh/ksh 或然其余shell,你能够在Unix-like系统上试着用上边find命令的语法格式来删除文件:

  1. find /dir/-type f -not-name '相称方式'-delete

或者

  1. ## 对于奇异的文件名能够使用 xargs ##
  2. find /dir/-type f -not-name '相称形式'-print0 | xargs -0-I {} rm {}
  3. find /dir/-type f -not-name '相配格局'-print0 | xargs -0-I {} rm [选项]{}

想要删除 ~/source 目录下除 php 以外的文件,键入:

  1. find ~/sources/-type f -not-name '*.php'-delete

或者

  1. find ~/sources/-type f -not-name '*.php'-print0 | xargs -0-I {} rm -v {}

只保留 *.zip 和 *.iso 文件的语法如下:

  1. find .-type f -not ( -name '*zip'-or-name '*iso' ) -delete

越多音讯参见bash command man page和find command man page。

正文恒久更新链接地址:

作者是一名Linux新客商。以往自家索要清理贰个下载目录中的文件,其实自个儿就算想从~/Download/文件夹删去除...

本文由王中王开奖结果发布于操作系统,转载请注明出处:Linux下使用bash删除目录中的特定文件

关键词:

上一篇:文本中的不可见字符和处理
下一篇:没有了