zjp0633 发表于 2018-8-26 11:04:43

Shell开启扩展模式匹配shopt -s extglob

  shopt 命令可以设置 shell 的可选参数.
shopt [-psu]   -s 开启某个选项.
  -u 关闭某个选项.
  -p 列出所有选项的当前生效命令. (不带-p表示列出所有选项的当前状态)
extglob选项
  如果开启 extglob 选项, shell 将启用扩展模式匹配
  查看 extglob 选项是否开启(默认是off)
$ shopt extglob  
extglob off
  开启 extglob 选项
$ shopt -s extglob  此时查看 extglob 选项是否开启
$ shopt extglob  
extglob on
  关闭 extglob 选项
$ shopt -u extglob  开启之后,以下5个模式匹配操作符将被识别:
?(pattern-list)      #所给模式匹配0次或1次  *(pattern-list)      #所给模式匹配0次以上包括0次
  +(pattern-list)      #所给模式匹配1次以上包括1次
  @(pattern-list)   #所给模式仅仅匹配1次
  !(pattern-list)       #不匹配括号内的所给模式
实例
  将目录下所有的文件和目录移动到 backup 目录中.
  当前目录下3个文件以及两个目录
$ ls  
dir1dir2file1file2file3
  新建一个 backup 目录
$ mkdir -p backup  将除了 backup 目录的其他文件和目录移动到 backup 目录下
$ mv !(backup) backup/  查看结果
$ ls  
backup
  
$ ls backup/
  
dir1dir2file1file2file3
  删除当前目录下所有file开头的文件或目录
$ ls  
backupdir1dir2file1file2file3
  
$ rm -rf file
  
$ ls
  
backupdir1dir2
  移动除了 dir1 目录以及 file1 文件到 backup 目录下
$ mv !(dir1|file1|backup) backup/  
$ ls
  
backupdir1file1
  
$ ls backup/
  
dir2file2file3


页: [1]
查看完整版本: Shell开启扩展模式匹配shopt -s extglob