linux rm 命令 排除文件

#排除a.txt 和b.txt文件
​​​​​​​rm -rf !(a.txt|b.txt)

执行后会出现

-bash: !: event not found

原因:
#shopt extglob 未开启

shopt -s extglob  #-s开启 -u关闭
#shopt命令和extglob是什么东东

shopt命令

shopt(选项)(参数)

#选项
#-s:激活指定的shell行为选项; 
#-u:关闭指定的shell行为选项。
#参数
cdable_vars|cdspell|checkhash|checkwinsize|cmdhist|dotglob|......
等等用时自行查找

shopt命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项
来自: http://man.linuxde.net/shopt

Bash Shell有个extglob选项,开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便。
开启方法很简单,使用shopt命令:shopt -s extglob 
关闭,使用shopt命令:shopt -u extglob

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

  1. ?(pattern-list) - 所给模式匹配0次或1次;
  2. *(pattern-list) - 所给模式匹配0次以上包括0次;
  3. +(pattern-list) - 所给模式匹配1次以上包括1次;
  4. @(pattern-list) - 所给模式仅仅匹配1次;
  5. !(pattern-list) - 不匹配括号内的所给模式。

猜你喜欢

转载自my.oschina.net/u/261246/blog/821641