[Linux] 删除、移动文件排除

1.shopt命令
shopt 命令用于显示和设置shell中的行为选项
shopt -> shell option 这样记忆

shopt 命令
shopt [-psu] [optname …]
-s 开启某个选项
-u 关闭某个选项
-p 列出所有可设置的选项


2.扩展的模式匹配extglob
开启 shopt -s extglob
关闭 shopt -u extglob

[root@abc test]# shopt | grep extglob
extglob         off
[root@abc test]# shopt -s extglob
[root@abc test]# shopt | grep extglob
extglob         on
[root@abc test]# shopt -u extglob
[root@abc test]# shopt | grep extglob
extglob         off
[root@abc test]#

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


【例1】移动文件排除
移动除了dir1目录以及file1文件到backup目录下

[root@abc test]# mkdir dir1 dir2 dir3
[root@abc test]# touch file1 file2 file3
[root@abc test]#
[root@abc test]# ls -l
total 0
drwxr-xr-x 2 root root 6 Jun  9 17:28 dir1
drwxr-xr-x 2 root root 6 Jun  9 17:28 dir2
drwxr-xr-x 2 root root 6 Jun  9 17:28 dir3
-rw-r--r-- 1 root root 0 Jun  9 17:28 file1
-rw-r--r-- 1 root root 0 Jun  9 17:28 file2
-rw-r--r-- 1 root root 0 Jun  9 17:28 file3
[root@abc test]#
[root@abc test]# mkdir backup
[root@abc test]# shopt -s extglob
[root@abc test]# mv !(dir1|file1|backup) backup/
[root@abc test]#
[root@abc test]# cd backup/
[root@abc backup]# ls
dir2  dir3  file2  file3
[root@abc backup]#
[root@abc backup]# mv ./* ..
[root@abc backup]# cd ..
[root@abc test]#


【例2】删除文件排除
删除当前路径除了backup和file1之外的路径和文件

[root@abc test]# ls
backup  dir1  dir2  dir3  file1  file2  file3
[root@abc test]#
[root@abc test]#
[root@abc test]# rm -rf !(backup|file1)
[root@abc test]# ls
backup  file1
[root@abc test]# shopt -u extglob
[root@abc test]#

猜你喜欢

转载自blog.csdn.net/wy_hhxx/article/details/117748444