Shell删除特定文件以外的文件

Bash Shell有个extglob选项。开启后Shell可以 另外识别出5个模式匹配操作符,能使文件匹配更加方便 。

开启的方法:

使用shopt命令:shopt -s extglob

关闭的方法:      shopt -u extglob

开启后,以下5个模式匹配操作符将被识别:

?(pattern-list) - 所给模式匹配0次或1次;

*(pattern-list) - 所给模式匹配0次以上包括0次;

+(pattern-list) - 所给模式匹配1次以上包括1次;

@(pattern-list) - 所给模式仅仅匹配1次;

!(pattern-list) - 不匹配括号内的所给模式。 

示例 
删除文件名不以jpg结尾的文件: 
rm -rf !(*jpg) 
删除文件名以jpg或png结尾的文件: 
rm -rf *@(jpg|png)

Shell删除特定文件以外的文件,布布扣,bubuko.com

时间: 2024-10-05 08:31:19

Shell删除特定文件以外的文件的相关文章

shell删除超过指定时间的文件

#!/bin/bash#@loyu#pdtfind /home/oracle/RAC-backup/weekly_full/ -mtime +20 | xargs rm -rffind /home/oracle/RAC-backup/recovery/ -mtime +15 | xargs rm -rffind /home/oracle/RAC-backup/controlfile/ -mtime +15 | xargs rm -rffind /home/oracle/RAC-backup/ar

shell脚本之删除内容相同的重复文件

#!/bin/bash #!删除内容相同的重复文件 ls -lS --time-style=long-iso | awk 'BEGIN{ getline;getline; name1=$8;size=$5 } { name2=$8; if(size==$5) { "md5sum " name1 | getline;csum1=$1; "md5sum " name2 | getline;csum2=$2; if(csum1==csum2) { print name1;

shell脚本删除N天前的文件夹-----附linux和mac上date命令的不同

背景: 每日构建的东西,按日期放到不同的文件夹里.如今天的构建放到2015-06-01里,明天的就放到2015-06-02里,依次类推.时间久了,需要一个脚本删除N天前的文件夹.(本例中N=7,即删除一周前的构建). 下面直接上代码,linux版: #! /bin/bash historyDir=~/test/ today=$(date +%Y-%m-%d) echo "---------today is $today-----------" tt=`date -d last-week

无法删除 NTFS 盘上的文件或文件夹(对Windows文件的各种情况有比较详细的描述)

简介 本文介绍您可能无法删除 NTFS 文件系统卷上的文件或文件夹的原因,以及如何分析造成此问题的不同原因从而解决此问题. 更多信息 注意:在内部,NTFS 将文件夹作为特殊类型的文件进行处理.因此,本文中的“文件”一词可能指文件,也可能指文件夹. 原因 1:文件使用了 ACL 如果某个文件使用了访问控制列表 (ACL),您可能无法删除该文件.要解决此问题,请更改该文件上的权限.您可能需要拥有这些文件的所有权才能更改权限. 管理员具有取得任何文件所有权的隐含能力,即使未明确向他们授予针对此文件的

Linux Shell脚本去掉几类常见文件中的注释

Linux操作系统中去掉各类文件中的注释这个功能比较常用,通常用在查看一个较长的文件,又不想看注释的情况.通常这些文件包括C语言编写的*.c.*.h文件.cpp文件.*.xml文件.*.sh shell脚本文件.*.ini *.conf配置文件.*.php *.py *.pl等编程语言编写的文件以及无扩展名的一些可执行文件等. 实现这个功能并不复杂,通常注释风格就那么几种,在编写脚本过程中只需要编写出合适的正则表达式以及运用适当的文本处理工具(grep.sed等)即可. 针对几种常见的注释风格编

linux自动删除规定天数前的文件

公司在线上有一个监控系统,每天都会制造大量文件,然后就需要删除规定天数以前的文件,用来保证硬盘不会满造成服务中断. 语句也很简单, #delete 15 days ago picture files find /home/monitoring/ -mtime +15 -exec rm -rf {} \; -mtime -n +n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前 -exec: find命令对匹配的文件执行该参数所给出的shell命令.相应命令的形式为'command' {

【菜鸟学Linux】Cron Job定期删除Log(日志)文件

以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长很快,所以需要用脚本(Bash scripts)删除过期的Log文件. 使用Linux下的Cron Job可以很好的解决这个问题. 什么是Cron Job? 建立Cron Job需要用到命令crontab,维基百科定义:crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.

删除文件名含有特殊字符的文件时的意外发现

首先介绍一下删除文件名含有特殊字符的文件的方法: Linux 系统下的文件名长度最多可到256个字符.通常情况下,文件名的字符包括:字母.数字."."(点)."_"(下划线)和"-"(连字符).Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做. 有些转意字符 (即该字符被系统借用,表示某种特殊含义) 在 Linux 的 命令解释器(shell)中有特殊的含义.这样的转意字符有:"?"(问号),&q

使用shell 判断文件夹或文件是否存在

使用shell 判断文件夹或文件是否存在 判断文件夹是否存在 if [! -d "/etc/open" ];then echo "文件夹/etc/open不存在" esle echo "文件夹/etc/open存在" fi 判断文件是否存在,若存在则删除 if [ ! -f "/etc/filename" ];then echo "文件不存在" else rm -rf /etc/lename echo &q