文件名通配符与touch命令

一、touch
           touch filename

           若文件不存在,则创建一个空文件

[root@localhost ~]# touch hi
[root@localhost ~]# 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: -

           若文件存在,则更新三个时间戳

  1.  -a filename 仅更新atime ctime
[root@localhost ~]# touch -a hi
[root@localhost ~]# 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

[root@localhost ~]# touch -m hi
[root@localhost ~]# 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  将时间戳更新为指定时间

[root@localhost ~]# touch -t 201807151222 hi
[root@localhost ~]# 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: -

 

 

二、 文件名通配符

  1.   * 匹配0或多个任意字符

                   a* 以a为开头的0或多个任意字符

[root@localhost ~]# touch agtijn
[root@localhost ~]# touch a4t59
[root@localhost ~]# ls a*
a4t59  agtijn

 

       2.   ? 匹配任意1个字符

          a?*匹配a为开头,任意2个或以上字符的文件

[root@localhost ~]# ls a?*
a4t59  agtijn

 

      3.    [0-9] 10个数字中任意一个,只能是一位

[root@localhost ~]# ls [0-9]
4  5  7

 

     4.    [0-9]*    开头为数字,其他为任意字符的文件名

[root@localhost ~]# 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

[root@localhost ~]# touch {1..100}
[root@localhost ~]# 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结尾的文件或目录

      [root@localhost 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

       [root@localhost ~]# mkdir -p testdir/dir{9/x/a,10/y/b}

       [root@localhost ~]# tree testdir/

19、 使用一条命令创建/testdir/dir11, /testdir/dir12, /testdir/dir13, /testdir/dir12/dir14, /testdir/dir13/dir15

        [root@localhost ~]# mkdir -p testdir/dir{11,12/dir14,13/dir15}

        [root@localhost ~]# tree testdir/

转载于:https://www.cnblogs.com/f-h-j-11-7/p/9313888.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux系统中,有三种常用的命令可以用来修改文件名,它们分别是mv、cp和rename命令。 使用mv命令可以将源文件重命名为目标文件,或将源文件移动至指定目录。mv命令的语法如下: mv [options] source dest 其中,source表示源文件名,dest表示目标文件名或目标目录名。mv命令的一些常用选项包括: -b:在执行覆盖前,为目标文件创建一个备份。 -i:如果源文件与目标文件同名,则会询问是否覆盖旧文件。 -f:如果源文件与目标文件同名,不会询问,直接覆盖旧文件。 -n:不覆盖已存在的文件或目录。 -u:只有当源文件比目标文件新或目标文件不存在时,才执行移动操作。 另外,使用cp命令也可以实现修改文件名的效果。cp命令的语法如下: cp [options] source dest 其中,source表示源文件名,dest表示目标文件名。cp命令的一些常用选项包括: -f:覆盖已经存在的目标文件而不给出提示。 -i:在覆盖目标文件之前给出提示,要求用户确认是否覆盖。 -p:除复制文件的内容外,还复制修改时间和访问权限。 -r:若源文件是一个目录文件,将复制该目录下所有的子目录和文件。 此外,还可以使用rename命令来修改文件名。rename命令的语法如下: rename [options] expression replacement file… 其中,expression表示需要替换的旧文件名,replacement表示新的文件名。rename命令还可以搭配通配符*来实现批量修改文件名的功能。 综上所述,以上三种命令都可以用来修改文件名,具体使用哪种命令取决于你的需求和习惯。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值