我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用bash shell删除目录中的特定文件的3种方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用bash shell删除目录中的特定文件的3种方法

我是一名Linux新用户。现在我需要清理一个下载目录中的文件,其实我就是想从~/Download/文件夹删去除了以下格式的文件外所以其它文件:

1.*.iso - 所有的iso格式的文件。
2.*.zip - 所有zip格式的文件。

我如何在一个基于Linux,OS X 或者 Unix-like 系统上的bash shell中删除特定的文件呢?

Bash shell 支持丰富的文件模式匹配符例如:

1.* - 匹配所有的文件。
2.? - 匹配文件名中的单个字母。
3.[...] - 匹配封闭括号中的任何一个字母。

策略 #1: 见识一下扩展的模式匹配符

这里你需要用系统内置的shopt命令来开启shell中的extglob选项,然后你就可以使用扩展的模式符了,这些模式匹配符如下:

1.?(模式列表) - 匹配零次或一次给定的模式。
2.*(模式列表) - 匹配零次或多次给定的模式。
3.+(模式列表) - 至少匹配一次给定的模式。
4.@(模式列表) - 匹配一次给定的模式。
5.!(模式列表) - 不匹配给定模式。

一个模式列表就是一个或多个用 | 分开的模式(文件名)。

首先要打开extgolb选项:

shopt -s extglob

在Bash中删掉除.zip和.iso文件以外的所有文件
rm 命令的语法格式为:

## 仅保留 file1 文件 ##

rm  !(file1)

 

## 仅保留 file1 和 file2 文件## 

rm  !(file1|file2)

 

## 仅保留 zip 文件 ##

rm  !(*.zip)

 

## 仅保留 zip 和 iso 文件 ##

rm  !(*.zip|*.iso)

 

## 你也可以使用完整的目录 ##

rm /Users/vivek/!(*.zip|*.iso|*.mp3)

 

## 也可以传递参数 ##

rm [选项]  !(*.zip|*.iso)

rm -v  !(*.zip|*.iso)

rm -f  !(*.zip|*.iso)

rm -v -i  !(*.php)

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

摘自 bash(1) 手册页:

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

要删除所有文件只保留 zip 和 iso 文件,应如下设置 GLOBIGNORE:

## 只在 BASH 中可行 ##

cd ~/Downloads/

GLOBIGNORE=*.zip:*.iso

rm -v *

unset GLOBIGNORE

策略 #3: 用 find 命令删除所有其它文件仅保留 zip 和 iso 文件

如果你正在使用 tcsh/csh/sh/ksh 或者其它shell,你可以在Unix-like系统上试着用下面find命令的语法格式来删除文件:

find /dir/ -type f -not -name '匹配模式' -delete

或者
## 对于怪异的文件名可以使用 xargs ##

find /dir/ -type f -not -name '匹配模式' -print0 | xargs -0 -I {} rm {}

find /dir/ -type f -not -name '匹配模式' -print0 | xargs -0 -I {} rm [选项] {}

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

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

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

只保留 *.zip 和 *.iso 文件的语法如下:
find . -type f -not ( -name '*zip' -or -name '*iso' ) -delete

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用bash shell删除目录中的特定文件的3种方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用bash shell删除目录中的特定文件的3种方法

我是一名Linux新用户。现在我需要清理一个下载目录中的文件,其实我就是想从~/Download/文件夹删去除了以下格式的文件外所以其它文件: 1.*.iso - 所有的iso格式的文件。 2.*.zip - 所有zip格式的文件。 我如何
2022-06-04

使用bash shell删除目录中的特定文件的方法有哪些

本篇内容介绍了“使用bash shell删除目录中的特定文件的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我是一名Linux新用
2023-06-09

Linux删除目录下的文件的10种方法小结

看到了一遍文章,便突发奇想的想起linux中删除目录下的所有文件的方法;整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.rm -f * #最经典的方法,删除当前目录下的所有类型的文件 2.find . -type
2022-06-04

Shell中删除某些文件外所有文件的3个方法

我的一位同事曾经问过我这样一个问题:在 Linux 下,如何 删除目录中除某些文件之外的所有文件?当时,我告诉他可 以通过模式匹配的方法解决。但其实,除此之外,还有其他 的方法,正所谓“条条大路通罗马”。让我们来逐一看看。 假设要删除 ~/
2022-06-04

Linux 删除特殊字符文件名或目录的方法

通过文件的inode号删除文件 先用ls -i 找出要删除文件的inode 号ls -i |grep xxxxxx|awk '{print $2}'|xargs -i rm -f {} xxxxxx为文件的 inodwww.cppcns.c
2022-06-04

使用Bash Shell获取文件名和目录名的简单方法

前言 还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名。这里记录一下实现过程。当然,最后我也会给出官方的做法。(ps:很?澹?迪滞炅瞬欧⑾衷??ash Shell有现成的函数) 获取文件名 假设给定的路径名为:/tmp/cs
2022-06-04

利用shell命令删除指定的文件的方法

今天为了省事文件内容都copy过来了。又为了省事,想了一想,用脚本比较开心。所以就写了一个shell脚本,在此做一个记录。 #!/bin/bash ls -li | tail -n +2 http://www.c
2022-06-05

使用Shell遍历目录及其子目录中的所有文件方法

新建一个shell文件$ vi traveDir.shunXPRPHcZz输入以下代码#! /bin/bashfunction read_dir(){for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
2022-06-04

使用Bash Shell对目录中的文件实现递归式拷贝

前言今天工作中遇到了一个问题,如果将目录A中的文件拷贝到目录B中(前提目录B没有该文件),并保持文件在目录A的结构。项目重点如下:需要在目录B中保持文件在目录A中的结构。假设A目录文件 A/test/1.txt,转移到目录B中应该是B/te
2022-06-04

使用Golang删除数组中特定元素的方法

如何使用Golang删除数组中指定的元素?在Golang的开发中,经常会遇到需要从数组中删除指定的元素的情况。本文将介绍如何使用Golang的内置函数和切片操作来实现这一目标,并提供具体的代码示例。Golang提供了一个内置函数copy
使用Golang删除数组中特定元素的方法
2024-01-24

使用Java如何删除文本文件中特定行的内容

今天就跟大家聊聊有关使用Java如何删除文本文件中特定行的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MV
2023-06-14

如何使用Windows XP删除文件或文件夹的多种方法

本篇文章给大家分享的是有关如何使用Windows XP删除文件或文件夹的多种方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。删除文件或文件夹的多种方法 当杂乱无章的文件或文件
2023-06-14

如何使用Bash Shell对目录中的文件实现递归式拷贝

本篇内容介绍了“如何使用Bash Shell对目录中的文件实现递归式拷贝”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言 今天工作中
2023-06-09

怎么在Linux中使用bash命令删除文件中含“指定内容”的行

怎么在Linux中使用bash命令删除文件中含“指定内容”的行?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:#!/bin/sh# 功能: 删除文
2023-06-09

在 Linux 中不使用 CD 命令进入目录/文件夹的方法

众所周知,如果没有 cd 命令,我们无法 linux 中切换目录。这个没错,但我们有一个名为 shopt 的 Linux 内置命令能帮助我们解决这个问题。 shopt 是一个 shell 内置命令,用于设置和取消设置各种 bash shel
2022-06-04

编程热搜

目录