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

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

方法1:模式匹配法

-s extglob # 确认开启 extglob 选项

cd ~/Downloads

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

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

方法2:设置变量法

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

cd ~/Downloads

export GLOBIGNORE=*.zip:*.iso

rm -v *

unset GLOBIGNORE

方法3:find 搜索法

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

cd ~/Downloads

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

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

时间: 2024-11-09 05:57:59

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

PHP删除指定目录下的所有文件

/**  * 删除指定目录下的所有文件  *  * @param String $dir  要进行操作的路径  * 适合范围,只有用于文件夹内不存在子文件夹的情况下  * 来源  DZ  * 小佳(www.phpcina.cn)  整理 于 2006-06-26   */ function dir_clear($dir) {     $directory = dir($dir);                //创建一个dir类(PHP手册上这么说的),用来读取目录中的每一个文件     wh

xcode-在iPhoneSDK中删除指定HTML标签

问题描述 在iPhoneSDK中删除指定HTML标签 应用中的NSString中包含HTML,我想删除< img src=..../>标签的内容. 举个例子: Source = < p>< a href="http://wpcore.mpf.s3.amazonaws.com/wp-content/uploads/2012/12/thumbs_img_0500.jpg">**< img class="alignleft size-ful

java删除指定目录下所有空文件夹的方法_java

本文实例讲述了java删除指定目录下所有空文件夹的方法.分享给大家供大家参考,具体如下: package com.func; import java.io.File; import java.util.ArrayList; import java.util.List; /** * 删除指定目录下的所有空文件夹 * * @author zdw * */ public class FileUtils { List<File> list = new ArrayList<File>();

AIX系统中删除指定目录、指定后缀、指定天数以前的历史文件_服务器其它

命令: find /home/oracle/admin/zhjport/udump/ -name "*.trc" -mtime +30 -exec rm {} \; 如果要自动执行可以加入CRONTAB 本文出自 "麦地坞" 博客,请务必保留此出处 AIX是什么系统 AIX吧,Advanced Interactive eXecutive(AIX)是IBM专有UNIX操作系统的商标名 aix和redhat linux的不同 1.用法都差不多,只不过AIX要比LINUX

Linux下利用inode删除指定文件

本文主要介绍使用inode删除异常文件名的文件的方法,供大家参考: 在Linux中,有时候会遇到文件名是乱码或者是某些特殊中文的文件,这时候通过文件名就很难删除. 同时,对于linux中的任何一个文件都必然有其唯一的inode值,这时候就可以通过inode来删除异常文件名的文件. 操作的对象一般为类似下面的文件: [root@server tmp]# ll    总用量 61404-rw-r--r-- 1 root root 0 6月 16 14:58 ?    -rw-r--r-- 1 roo

.NET中删除指定文件夹中指定后缀名的所有文件!

问题描述 文件是随机生成的,所以文件名不确定,但具有确定的后缀名,请教如何删除之?? 解决方案 解决方案二:遍历文件夹删除文件就可以了,查查File,Directory类.解决方案三:stringPath;//路径if(System.IO.Directory.Exists(Path)){//SearchthedirectoryDirectoryInfodi=newDirectoryInfo(Path);FileInfo[]f=di.GetFiles("*.xls");//文件夹下的.x

Linux下清空与删除指定大小的大文件命令

  查找大文件  代码如下   find /dir -size +100M -exec ls -lh {} \; 如果想直接删除大于50M的文件,使用命令  代码如下   find /var/mail/ -size +50M -exec rm {} \; 如果要清空一些文本文件类的东西,可以使用  代码如下   echo "" > /www.111cn.net /xxx.log 此命令能与"echo > /var/log/big.log"达到相同效果,不

批处理bat删除指定天数日期之前的文件夹_DOS/BAT

[方案一]BAT + REG + VBS 复制代码 代码如下: @echo off ::演示:删除指定路径下指定天数之前(以文件夹的最后修改日期为准)的文件夹. ::如果演示结果无误,把rd前面的echo去掉,即可实现真正删除. ::本例调用了临时VBS代码进行日期计算 ::本例为兼容不同的日期格式,调用reg命令(XP系统自带)统一设置日期格式, ::处理完毕之后再把日期格式恢复成原来的状态. rem 指定待删除文件夹的存放路径 set SrcDir=C:/Test rem 指定天数 set

删除指定路径的类型为文件夹的文件,不删除其他文件如何处理

问题描述 比如在路径C:ProgramFiles中有好多类型的文件,有文件夹文件,有.exe,.ini,.txt但在这些文件中,我只想删除文件夹文件,该如何处理呢,麻烦指导 解决方案 解决方案二:遍历下面的文件夹,Directory.Delete(path,true)或者dir.Delete(true);DirectoryInfotheFolder=newDirectoryInfo(@"F:a");DirectoryInfo[]dirInfo=theFolder.GetDirector