文件名通配符与touch命令
Posted f-h-j-11-7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件名通配符与touch命令相关的知识,希望对你有一定的参考价值。
一、touch
touch filename
若文件不存在,则创建一个空文件
[[email protected] ~]# touch hi [[email protected] ~]# stat hi File: ‘hi’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 50558257 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0 Access: 2018-07-15 12:11:05.022054456 +0800 Modify: 2018-07-15 12:11:05.022054456 +0800 Change: 2018-07-15 12:11:05.022054456 +0800 Birth: -
若文件存在,则更新三个时间戳
- -a filename 仅更新atime ctime
[[email protected] ~]# touch -a hi [[email protected] ~]# stat hi File: ‘hi’ Size: 6 Blocks: 8 IO Block: 409 Device: fd00h/64768d Inode: 50558257 Links: 1 Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: Context: unconfined_u:object_r:admin_home_t:s0 Access: 2020-03-04 05:10:13.225008912 +0800 Modify: 2018-07-15 12:12:04.206056540 +0800 Change: 2020-03-04 05:10:13.225008912 +0800 Birth: -
2. -m filename 仅更新mtime ctime
[[email protected] ~]# touch -m hi [[email protected] ~]# stat hi File: ‘hi’ Size: 6 Blocks: 8 IO Block: 409 Device: fd00h/64768d Inode: 50558257 Links: 1 Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: Context: unconfined_u:object_r:admin_home_t:s0 Access: 2020-03-04 05:10:13.225008912 +0800 Modify: 2020-03-04 05:10:30.795009531 +0800 Change: 2020-03-04 05:10:30.795009531 +0800 Birth: -
3. -c filename 若文件存在,则更新三个时间戳
若文件不存在,不会创建
4. -t 203010012050.30 fstab 将时间戳更新为指定时间
[[email protected] ~]# touch -t 201807151222 hi [[email protected] ~]# stat hi File: ‘hi’ Size: 6 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 50558257 Links: 1 Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2018-07-15 12:22:00.000000000 +0800 Modify: 2018-07-15 12:22:00.000000000 +0800 Change: 2020-03-04 05:19:19.689028146 +0800 Birth: -
二、 文件名通配符
- * 匹配0或多个任意字符
a* 以a为开头的0或多个任意字符
[[email protected] ~]# touch agtijn [[email protected] ~]# touch a4t59 [[email protected] ~]# ls a* a4t59 agtijn
2. ? 匹配任意1个字符
a?*匹配a为开头,任意2个或以上字符的文件
[[email protected] ~]# ls a?* a4t59 agtijn
3. [0-9] 10个数字中任意一个,只能是一位
[[email protected] ~]# ls [0-9] 4 5 7
4. [0-9]* 开头为数字,其他为任意字符的文件名
[[email protected] ~]# ls [0-9]* 4 4556 5 578 7
[a-z] 表示aAbBcC……z
[A-Z] 表示AbBcC……Z
[a-Z] 表示所有大小写字母
[ae] 表示是a或e的单一字符
[^ae] 表示即不是a也不是e的其他任意单一字符
[:lower:] 表示小写字母
[:upper:] 表示大写字母
[:alpha:] 表示大小写字母
[:digit:] 表示任意数字 等于0-9
[:alnum:] 表示任意字母及数字 等于a-Z0-9或[[:digit:][:alpha:]]
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符 文件名不可能包含回车,故此处使用与[:blank:]:效果相同
[:punct:] 表示符号
练习:使用touch {1..100} 创建1到100这100个文件,显示1-35
[[email protected] ~]# touch {1..100} [[email protected] ~]# ls [0-9] [1-2][0-9] [3][0-5] 1 13 17 20 24 28 31 35 7 10 14 18 21 25 29 32 4 8 11 15 19 22 26 3 33 5 9 12 16 2 23 27 30 34 6
1、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
ls -d /etc/ [^[:alpha:]][[:alpha:]]*
2、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
ls -d /etc/ rc[0-6]*
3、显示/etc目录下,所有以.d结尾的文件或目录
[[email protected] test]# ls -d /etc/*.d
4、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
ls -d /etc/[mnrp]*.conf
5、只显示/root下的隐藏文件和目录
ls –d /root/.*
6、只显示/etc下的非隐藏目录
ls –d /etc/[^.]*
7、显示/etc目录下所有以k开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
ls –d /etc/k*[0-9]*[[:lower:]]
8、显示/proc目录下名字由任意三位数字组成的文件或目录
ls –d /proc/[0-9][0-9][0-9]
9、显示/var/log目录下文件名包含符号及数字的文件或目录
ls –d /var/log/*[[:punct:]]*[[:digit:]]*
10、显示/usr/share/man目录下所有以m开头,以一个数字和x结尾的文件或目录
ls –d /usr/share/man/m*[[:digit:]]x
11、显示/etc目录下,所有以一个大写字母开头,以两个数字结尾的文件或目录
ls –d /etc/[[:upper:]]*[[:digit:]][[:digit:]]
12、显示/etc目录下,文件名至少包含一个小写字母和一个数字并以.conf结尾的文件或目录
ls –d /etc/*[[:lower:]]*[[:digit:]]*.conf
13、只显示用户家目录下的非隐藏目录
ls -d ~/[^.]*
14、定义别名命令baketc,将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见
alias baketc=‘cp -rv /etc testdir/backup`date +%F`‘
15、创建/testdir/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限
cp –prv /root testdir/rootdir
16、如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
mkdir -p testdir/dir{3,4,5/dir{6,7}}
tree testdir/
17、使用一条命令创建/testdir/dir8/x, /testdir/dir8/y, /testdir/dir8/x/a, /testdir/dir8/x/b, /testdir/dir8/x/c, /testdir/dir8/y/a, /testdir/dir8/y/b
mkdir -p testdir/dir8/{x/{a,b,c},y{a,b}}
tree testdir/
18、使用一条命令创建 /testdir/dir9/x, /testdir/dir10/y, /testdir/dir9/x/a, /testdir/dir10/y/b
[[email protected] ~]# mkdir -p testdir/dir{9/x/a,10/y/b}
[[email protected] ~]# tree testdir/
19、 使用一条命令创建/testdir/dir11, /testdir/dir12, /testdir/dir13, /testdir/dir12/dir14, /testdir/dir13/dir15
[[email protected] ~]# mkdir -p testdir/dir{11,12/dir14,13/dir15}
[[email protected] ~]# tree testdir/
以上是关于文件名通配符与touch命令的主要内容,如果未能解决你的问题,请参考以下文章