Linux文件管理和IO重定向

2.7 文件通配符模式 wildcard pattern

  1. 显示/etc目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录列表。
    [root@centos7 data]#ls -d /etc/l*[0-9]*[[:lower:]]
    ls: cannot access /etc/l*[0-9]*[[:alpha:]]: No such file or directory
    [root@centos7 data]#
    
  2. 显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录列表
    [root@centos7 data]#ls /etc/[0-9]*[^0-9]
    ls: cannot access /etc/[0-9]*[^0-9]: No such file or directory
    
  3. 显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录列表
    [root@centos7 data]#ls -d /etc/[^[:alpha:]][[:alpha:]]*
    ls: cannot access /etc/[^[:alpha:]][[:alpha:]]*: No such file or directory
    [root@centos7 data]#
    
  4. 显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录列表
    [root@centos7 data]#ls -d /etc/rc[0-6]*
    /etc/rc0.d  /etc/rc1.d  /etc/rc2.d  /etc/rc3.d  /etc/rc4.d  /etc/rc5.d  /etc/rc6.d
    [root@centos7 data]#
    
  5. 显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录列表
    [root@centos7 data]#ls -d /etc/[mnrp]*.conf
    /etc/man_db.conf  /etc/mke2fs.conf  /etc/nsswitch.conf  /etc/resolv.conf  /etc/rsyslog.conf
    [root@centos7 data]#
    
  6. 只显示/root下的隐藏文件和目录列表
    [root@centos7 data]#ls -d /root/.*
    /root/.   /root/.bash_history  /root/.bash_profile  /root/.cshrc    /root/.tcshrc
    /root/..  /root/.bash_logout   /root/.bashrc        /root/.lesshst
    [root@centos7 data]#
    
  7. 只显示/etc下的非隐藏目录列表
    [root@centos7 data]#ls -d /etc/*
    /etc/adjtime                  /etc/hosts                     /etc/python
    /etc/aliases                  /etc/hosts.allow               /etc/rc0.d
    /etc/aliases.db               /etc/hosts.deny                /etc/rc1.d
    /etc/alternatives             /etc/init.d                    /etc/rc2.d
    /etc/anacrontab               /etc/inittab                   /etc/rc3.d
    /etc/asound.conf              /etc/inputrc                   /etc/rc4.d
    

2.9 复制文件和目录

  1. 每天将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为 backupYYYYmm-dd,备份过程可见。
    [root@centos7 data]#cp -arv /etc/ /data/etcbkp`date +%Y%m-%d`

目录操作

  1. 如何创建/testdir/dir1/x,/testdir/dir1/y,/testdir/dir1/x/a,/testdir/dir1/x/b,/testdir/dir1/y/a,/testdir/dir1/y/b
    [root@centos7 data]#mkdir -v -p /testdir/dir1/{x,y}/{a,b}
    mkdir: created directory ‘/testdir’
    mkdir: created directory ‘/testdir/dir1’
    mkdir: created directory ‘/testdir/dir1/x’
    mkdir: created directory ‘/testdir/dir1/x/a’
    mkdir: created directory ‘/testdir/dir1/x/b’
    mkdir: created directory ‘/testdir/dir1/y’
    mkdir: created directory ‘/testdir/dir1/y/a’
    mkdir: created directory ‘/testdir/dir1/y/b’
    [root@centos7 data]#
    
  2. 如何创建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a, /testdir/dir2/x/b
    [root@centos7 /]#mkdir -pv /testdir/dir2/{x/{a,b},y}
    mkdir: created directory ‘/testdir/dir2’
    mkdir: created directory ‘/testdir/dir2/x’
    mkdir: created directory ‘/testdir/dir2/x/a’
    mkdir: created directory ‘/testdir/dir2/x/b’
    mkdir: created directory ‘/testdir/dir2/y’
    [root@centos7 /]#
  3. 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
    [root@centos7 /]#mkdir -pv /testdir/dir{3,4,5/dir{6,7}}
    mkdir: created directory ‘/testdir/dir3’
    mkdir: created directory ‘/testdir/dir4’
    mkdir: created directory ‘/testdir/dir5’
    mkdir: created directory ‘/testdir/dir5/dir6’
    mkdir: created directory ‘/testdir/dir5/dir7’
    [root@centos7 /]#
    

重定向

  1. 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
    [root@centos7 data]#cat /etc/issue
    \S
    Kernel \r on an \m
    
    [root@centos7 data]#cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out
    [root@centos7 data]#cat /tmp/issue.out 
    \S
    KERNEL \R ON AN \M
    
    [root@centos7 data]#tr 'a-z' 'A-Z' < /etc/issue > /tmp/issue.out
    [root@centos7 data]#cat /tmp/issue.out 
    \S
    KERNEL \R ON AN \M
    
  2. 将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
    [root@centos7 ~]#who am i | tr 'a-z' 'A-Z' > /tmp/who.out
    [root@centos7 ~]#cat /tmp/who.out 
    ROOT     PTS/0        2022-05-01 09:32 (10.0.0.1)
    [root@centos7 ~]#
    
  3. 一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:Hello, I am 用户名,The system version is here,please help me to check it ,thanks! 操作系统版本信息
    [root@centos7 data]#mail -s help 634073389@qq.com <<EOF
    > hello
    > I am lvyq
    > the system version is here, please help me to check it, thanks!
    > `lsb_release -a`
    > EOF
    [root@centos7 data]#
  4. 将/root/下文件列表,显示成一行,并文件名之间用空格隔开
    [root@centos7 data]#ls /root/ | tr '\n' ' '
    anaconda-ks.cfg dead.letter file0 file1 file10 file2 file3 file4 file5 file6 file7 file8 file
    [root@centos7 data]#
    
  5. 计算1+2+3+...+99+100的总和
    [root@centos7 data]#echo {1..100}|tr ' ' '+'|bc
    5050
    [root@centos7 data]#seq -s+ 100|bc
    5050
    [root@centos7 data]#
    
  6. 删除Windows文本文件中的回车字符 ,即“\r”
    [root@centos7 data]#file win.txt 
    win.txt: ASCII text, with CRLF line terminators
    [root@centos7 data]#hexdump -C win.txt 
    00000000  61 0d 0a 62 0d 0a 63                              |a..b..c|
    00000007
    [root@centos7 data]#touch linux.txt
    [root@centos7 data]#vi linux.txt 
    [root@centos7 data]#hexdump -C linux.txt 
    00000000  61 0a 62 0a 63 0a                                 |a.b.c.|
    00000006
    [root@centos7 data]#file linux.txt 
    linux.txt: ASCII text
    [root@centos7 data]#cat win.txt |tr -d '\r' > win2.txt
    [root@centos7 data]#hexdump -C win2.txt 
    00000000  61 0a 62 0a 63                                    |a.b.c|
    00000005
    [root@centos7 data]#file win2.txt 
    win2.txt: ASCII text
    [root@centos7 data]#
    
  7. 处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格
    [root@centos7 data]#echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4'|tr -d [[:alpha:][:punct:]]
     1  2  3  4
    [root@centos7 data]#echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4'|tr -d [a-z.\,\#\*\!\$\/]
     1  2  3  4
    [root@centos7 data]#echo “xt.,l 1 jr#whoamimn2 c*/fe3 uz4” |tr -dc '0-9 '
     1 2 3 4[root@centos7 data]#
    
    
  8. 将PATH变量每个目录显示在独立的一行
    [root@centos7 data]#echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@centos7 data]#echo $PATH|tr : '\n'
    /usr/local/sbin
    /usr/local/bin
    /usr/sbin
    /usr/bin
    /root/bin
  9. 将指定文件中0-9分别替代成a-j
    [root@centos7 data]#cat fstab|tr '0-9' 'a-j'
    
    
  10. 将文件/etc/centos-release中每个单词(由字母组成)显示在独立一行,并无空行
    [root@centos7 data]#cat /etc/centos-release|tr -sc '[:alpha:]' '\n'
    CentOS
    Linux
    release
    Core
    [root@centos7 data]#
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值