Shopt命令(删除排除)
有时候我们需要反选某个文件以外的其他文件,就会用到rm -rf!(file)命令,但是有时候这条命令会报错显示 -bash: !: event not found
解决办法:shopt -s extglob开启模式匹配功能
shopt命令
shopt命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。
shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。
开启与关闭
开启shopt命令:shopt -s extglob
关闭shopt命令: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)
删除除aa和bb目录以外的其它目录或文件
rm -rf !(aa|bb)
需要注意的是,shopt命令的开启与关闭要与所用的命令分行隔开,避免出现在同一行
#!/bin/bash
shopt -s extglob
rm -fr /home/jenkins/workspace/kada-admin-vue/!(node_modules|mydir)
shopt -u extglob
Shopt命令(删除排除)的更多相关文章
- Bash 为何要发明 shopt 命令
在 Bash 中,有两个内置命令用来控制 Bash 的各种可配置行为的开关(打开或关闭),这些开关称之为选项(option).其中一个命令是 set,set 命令有三种功能:显示所有的变量和函数:修改 ...
- 使用exec命令删除前几天产生的日志
上次学习了访问某个网站并产生相应的日志保存在指定位置,但是时间长了,日志会占用磁盘大量的空间,下面使用exec这个命令删除之前的日志: 命令格式: find 目录绝对路径 -mtime +n(时间) ...
- 使用ar命令删除iOS静态库重复编译的.o文件
关于 xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误 看这里 http://www.cnblogs.com/cocoajin/p/3917709.ht ...
- hibernate session.createSQLQuery(sql); 通过命令删除
@Override public boolean deleteBySql(String sql) { Session session = getSession(); @SuppressWarnings ...
- 在TFS 2013上,使用tf workspace命令删除其他用户的工作区
8月25日补充:如果想批量删除工作区,你可以使用第三方工具MSBuild Sidekick http://www.attrice.info/downloads;或者自己编写一个bat脚本,但是缺陷是需 ...
- 如何将Linux rm命令删除的文件放入垃圾箱
因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...
- DedeCMS版权信息SQL命令删除
dedecms织梦系统底部会自动带有官方链接power by dedecms字样,很多新用户想去除官方的链接,底部调用标签为{dede:global.cfg_poweby/},方法很多,但不鼓励大家删 ...
- 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符
1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符 在命令模式下,使用正则表达式匹配 行首有空白字符行的模式:^[[:space:]] ...
- linux 下用find命令查找文件,rm命令删除文件
linux 下用find命令查找文件,rm命令删除文件. 删除指定目录下指定文件find 要查找的目录名 -name .svn |xargs rm -rf 删除指定名称的文件或文件夹: find -t ...
随机推荐
- ansible常用模块入门
常用模块有以下几个 command copy shell crond yum service setup 1.command模块 ansible george -m command -a " ...
- python 执行oracle、python脚本文件
import os # sql脚本结尾加';'!!! os.system('sqlplus.exe scott/s123@127.0.0.1:1521/ORCL @D:/PycharmProjects ...
- mailto链接
mailto链接是一种html链接,能够设置你电脑中邮件的默认发送信息,但是需要你电脑安装默认的E-mail软件,类似Microsoft Outlook等,那么点击mailto链接就可以获得默认设置的 ...
- guava学习,集合专题
lists //JDKList<String> list = new ArrayList<String>();list.add("a");list.add( ...
- TCP/IP 通信
TCP/IP 通信又叫socket 通信,是基于TCP/IP协调面向连接的一个数据传输技术.是属于OSI国际标准的传输层,三次握手 提供数据,有序,安全,端到端的传输和接收.它有三个主要协议:传输控制 ...
- IO练习
#IO操作 import time; fileObj = open('log.txt','a'); while(True): data = input('请输入要写入的内容 : '); if data ...
- 微软AD相关操作的免费工具
https://www.ittsystems.com/best-free-active-directory-tools/
- windows下的端口转发命令netsh
使用下面的命令查看语法 netsh interface portproxy add v4tov4 /? add v4tov4 [listenport=]<integer>|<serv ...
- Windows下面Node和NPM的绿色安装及配置
1,Node安装 Windows版本可以在http://nodejs.org/#download下面选择msi安装版或者绿色版.其实Node的安装主要是Node.exe文件deploy和有关环境变量的 ...
- 7.12 vowels.c 程序
7.12 vowels.c 程序 #vowels.c -- 使用多重标签 #include <stdio.h> int main(void) { char ch; int a_ct, e_ ...