Kevin_306

练习笔记-文件管理之通配符批量改名 20201227

 通配符

文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件
通配符采有特定的符号,表示特定的含义,此特符号称为元 meta 字符

常见的通配符如下:  

*          匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件 
?          匹配任何单个字符 
~          当前用户家目录 
~mage      用户mage家目录 
~+和.      当前工作目录 
~-         前一个工作目录 
[0-9]      匹配数字范围 
[a-z]      字母 
[A-Z]      字母 
[wang]     匹配列表中的任何的一个字符 
[^wang]    匹配列表中的所有字符以外的字符
[root@centos8 ~]# touch 我
[root@centos8 ~]# ls ?
ls: cannot access '?': No such file or directory
[root@centos8 ~]# ls ? (#英文状态的?)
我  

其他: 

[root@centos8 ~]# ls .* 

[root@centos8 ~]# ls * f(#f前面有空格匹配)
ls: cannot access 'f': No such file or directory
anaconda-ks.cfg  f14  f20  f27  f33  f4   f46  f52  f59  f65  f71  f78  f84  f90  f97                                        
f1               f15  f21  f28  f34  f40  f47  f53  f6   f66  f72  f79  f85  f91  f98
f10              f16  f22  f29  f35  f41  f48  f54  f60  f67  f73  f8   f86  f92  f99
f100             f17  f23  f3   f36  f42  f49  f55  f61  f68  f74  f80  f87  f93  f11              f18  f24  f30  f37  f43  f5   f56  f62  f69  f75  f81  f88  f94  f12              f19  f25  f31  f38  f44  f50  f57  f63  f7   f76  f82  f89  f95  f13  f2   f26  f32  f39  f45  f51  f58  f64  f70  f77  f83  f9   f96  我

举例:

[root@centos8 ~]# ll f[1--5]
-rw-r--r--. 1 root root 0 Feb 28 11:18 f5

其他:

 

[root@centos8 ~]# ll f[1-5]
-rw-r--r--. 1 root root 0 Feb 28 11:18 f1
-rw-r--r--. 1 root root 0 Feb 28 11:18 f2
-rw-r--r--. 1 root root 0 Feb 28 11:18 f3
-rw-r--r--. 1 root root 0 Feb 28 11:18 f4
-rw-r--r--. 1 root root 0 Feb 28 11:18 f5
[root@centos8 ~]# ll f[1..5]
-rw-r--r--. 1 root root 0 Feb 28 11:18 f1
-rw-r--r--. 1 root root 0 Feb 28 11:18 f5
[root@centos8 ~]# ll f{1..5}
-rw-r--r--. 1 root root 0 Feb 28 11:18 f1
-rw-r--r--. 1 root root 0 Feb 28 11:18 f2
-rw-r--r--. 1 root root 0 Feb 28 11:18 f3
-rw-r--r--. 1 root root 0 Feb 28 11:18 f4
-rw-r--r--. 1 root root 0 Feb 28 11:18 f5
[root@centos8 ~]# 

 ☆小练习:

举例1:批量改名

[root@localhost ~]# touch f{1..10}.conf

[root@localhost ~]# touch f{1..10}.conf
[root@localhost ~]# ls
1                f10.conf  f3.conf  f6.conf  f9.conf
1.txt            f1.conf   f4.conf  f7.conf
anaconda-ks.cfg  f2.conf   f5.conf  f8.conf
[root@localhost ~]# rename conf conf.bak *
[root@localhost ~]# ls
1                f1.conf.bak  f5.conf.bak  f9.conf.bak
1.txt            f2.conf.bak  f6.conf.bak
anaconda-ks.cfg  f3.conf.bak  f7.conf.bak
f10.conf.bak     f4.conf.bak  f8.conf.bak

再次改回来:

1 [root@localhost ~]# rename conf.bak conf *
2 [root@localhost ~]# ls
3 1                f10.conf  f3.conf  f6.conf  f9.conf
4 1.txt            f1.conf   f4.conf  f7.conf
5 anaconda-ks.cfg  f2.conf   f5.conf  f8.conf

------------------------------------------------------------------- 

举例2:批量改名练习

1.创建10个.txt后缀的文件名

1 [00:43:46 root@localhost data]#touch f{1..10}.txt
2 [00:44:35 root@localhost data]#ls
3 f10.txt  f1.txt  f2.txt  f3.txt  f4.txt  f5.txt  f6.txt  f7.txt  f8.txt  f9.txt

 2.修改后缀

1 [00:47:57 root@localhost data]#rename "txt" "txt.bak" *
2 [00:48:10 root@localhost data]#ls
3 f10.txt.bak  f1.txt.bak  f2.txt.bak  f3.txt.bak  f4.txt.bak  f5.txt.bak  f6.txt.bak  f7.txt.bak  f8.txt.bak  f9.txt.bak
4 [00:48:12 root@localhost data]#

  顺便查看一下绝对路径:

 1 [00:44:28 root@localhost data]#ls | sed "s:^:`pwd`/:"
 2 /data/f10.txt.bak
 3 /data/f1.txt.bak
 4 /data/f2.txt.bak
 5 /data/f3.txt.bak
 6 /data/f4.txt.bak
 7 /data/f5.txt.bak
 8 /data/f6.txt.bak
 9 /data/f7.txt.bak
10 /data/f8.txt.bak
11 /data/f9.txt.bak

   再次改回来另外一种办法:

1 [00:57:55 root@localhost data]#ls
2 f10.txt.bak  f1.txt.bak  f2.txt.bak  f3.txt.bak  f4.txt.bak  f5.txt.bak  f6.txt.bak  f7.txt.bak  f8.txt.bak  f9.txt.bak
3 [00:57:55 root@localhost data]#rename ".bak" " " *
4 [00:58:11 root@localhost data]#ls
5 f10.txt   f1.txt   f2.txt   f3.txt   f4.txt   f5.txt   f6.txt   f7.txt   f8.txt   f9.txt 
6 [00:58:13 root@localhost data]#

  

往期命令练习:

计算当前目录下的文件数和目录数:

ls -l * |grep "^-"|wc -l ---文件个数

1 [root@localhost ~]# ls -l * |grep "^-"|wc -l2 13 

ls -l * |grep "^d"|wc -l    ---目录个数

 1 [root@localhost ~]# ls -l * |grep "^d"|wc -l2 0 

在ls中列出文件的绝对路径

命令:ls | sed "s:^:`pwd`/:"

 1 [root@localhost ~]# ls | sed "s:^:`pwd`/:"
 2 /root/1
 3 /root/1.txt
 4 /root/anaconda-ks.cfg
 5 /root/f10.conf
 6 /root/f1.conf
 7 /root/f2.conf
 8 /root/f3.conf
 9 /root/f4.conf
10 /root/f5.conf
11 /root/f6.conf
12 /root/f7.conf
13 /root/f8.conf
14 /root/f9.conf

 

posted on 2020-12-27 11:30  熊猫小虾  阅读(306)  评论(0编辑  收藏  举报

导航