# 第五章:Linux文件类型及查找命令实践

1、文件属性

  • 文件属性是指:

    • 文件的大小,创建时间,类型,权限,属组等。
    [root@oldboyedu ~]# ls -lih
    total 4.0K
    33574978 -rw-------. 1 root root 1.7K Apr  4 18:09 anaconda-ks.cfg
    [root@oldboyedu ~]# ls -lih /etc/
    total 1.1M
    51000206 drwxr-xr-x.  3 root root  101 Apr  4 18:06 abrt
    16881475 -rw-r--r--.  1 root root   16 Apr  4 18:08 adjtime
    16777784 -rw-r--r--.  1 root root 1.5K Jun  7  2013 aliases
    16777285 -rw-r--r--.  1 root root  12K Apr  4 18:17 aliases.db
    50334171 drwxr-xr-x.  2 root root  261 Apr  4 18:22 alternatives
    16881620 -rw-------.  1 root root  541 Aug  9  2019 anacrontab
    17167203 -rw-r--r--.  1 root root   55 Aug  8  2019 asound.conf
    51150791 drwxr-x---.  3 root root   43 Apr  4 18:06 audisp
    17528264 drwxr-x---.  3 root root   83 Apr  4 18:17 audit
    50331775 drwxr-xr-x.  2 root root   79 Apr  4 18:23 bash_completion.d
    16777785 -rw-r--r--.  1 root root 2.8K Oct 31  2018 bashrc
    34060666 drwxr-xr-x.  2 root root    6 Mar 18 07:46 binfmt.d
    16777318 -rw-r--r--.  1 root root   37 Sep  5  2019 centos-release
    16777319 -rw-r--r--.  1 root root   51 Sep  5  2019 centos-release-upstream
       35647 drwxr-xr-x.  2 root root    6 Aug  4  2017 chkconfig.d
      539069 drwxr-xr-x.  2 root root   36 Apr  4 18:20 cron.d
    17167190 drwxr-xr-x.  2 root root   42 Apr  4 18:06 cron.daily
    16881621 -rw-------.  1 root root    0 Aug  9  2019 cron.deny
    
    
  • 文件的属性总共10列

    16881621 -rw-------.  1 root root    0 Aug  9  2019 cron.deny
       1          2       3  4    5      6  7   8   9      10    
    
    • 第一列

      • 是文件的唯一标识,也称之为 inode(节点)号
    • 第二列

      • 第一个字符

        • 是指文件类型

          • - 是代表文件类型为普通文件 (用f表示)

          • d 是代表文件类型为目录 (用d表示)

            [root@oldboyedu ~]# ls -ld /etc/
            drwxr-xr-x. 79 root root 8192 Apr  9 17:51 /etc/
            [root@oldboyedu ~]# ls -lp /etc/
            total 1076
            drwxr-xr-x.  3 root root    101 Apr  4 18:06 abrt/ #以斜线结尾的都是目录
            -rw-r--r--.  1 root root     16 Apr  4 18:08 adjtime
            -rw-r--r--.  1 root root   1518 Jun  7  2013 aliases
            -rw-r--r--.  1 root root  12288 Apr  4 18:17 aliases.db
            drwxr-xr-x.  2 root root    261 Apr  4 18:22 alternatives/
            -rw-------.  1 root root    541 Aug  9  2019 anacrontab
            -rw-r--r--.  1 root root     55 Aug  8  2019 asound.conf
            drwxr-x---.  3 root root     43 Apr  4 18:06 audisp/
            [root@oldboyedu ~]# ls -F /etc/
            abrt/                    gnupg/                    motd               sasl2/
            adjtime                  GREP_COLORS               mtab@              securetty
            aliases                  groff/                    my.cnf             security/
            #@指的是连接文件
            
          • l 是代表文件类型为连接文件(用l表示)

            [root@oldboyedu ~]# ls -l /etc/rc.local 
            lrwxrwxrwx. 1 root root 13 Apr  4 18:22 /etc/rc.local -> rc.d/rc.local
            
            
          • c是代表文件类型为字符设备 (用c表示)

            [root@oldboyedu ~]# ls -l /dev/ttyS2
            crw-rw----. 1 root dialout 4, 66 Apr  9 17:51 /dev/ttyS2
            
          • b是代表文件类型为连接文件(用b表示)

            [root@oldboyedu ~]# ls -l /dev/ | grep "^d"
            drwxr-xr-x. 2 root root         140 Apr  9 17:51 block
            drwxr-xr-x. 2 root root          80 Apr  9 17:51 bsg
            drwxr-xr-x. 3 root root          60 Apr  9 17:51 bus
            drwxr-xr-x. 2 root root        2980 Apr  9 17:51 char
            drwxr-xr-x. 3 root root          60 Apr  9 17:51 cpu
            drwxr-xr-x. 5 root root         100 Apr  9 17:51 disk
            drwxr-xr-x. 2 root root          80 Apr  9 17:51 dri
            drwxr-xr-x. 2 root root           0 Apr  9 17:51 hugepages
            drwxr-xr-x. 4 root root         300 Apr  9 17:51 input
            drwxr-xr-x. 2 root root          60 Apr  9 17:51 mapper
            drwxrwxrwt. 2 root root          40 Apr  9 17:51 mqueue
            drwxr-xr-x. 2 root root          60 Apr  9 17:51 net
            drwxr-xr-x. 2 root root           0 Apr  9 17:51 pts
            drwxr-xr-x. 2 root root          60 Apr  9 17:51 raw
            drwxrwxrwt. 2 root root          40 Apr  9 17:51 shm
            drwxr-xr-x. 3 root root         200 Apr  9 17:51 snd
            drwxr-xr-x. 2 root root          60 Apr  9 17:51 vfio
            
            
          • s是代表文件类型为连接文件(用s表示)

            • .sock文件也是一类特殊的文件,这类文件通常用在网络之间,进行数据连接,如:我们可以启动一个程序来监听客户端的请求,客户端可以通过套接字来进行数据通信。
            • 进程之间通信的文件
            [root@oldboyedu ~]# ls -l /dev/ | grep "^s"
            srw-rw-rw-. 1 root root           0 Apr  9 17:51 log
            

2、查命令所在的路径

  • which

    [root@oldboyedu ~]# which ls
    alias ls='ls --color=auto'
    	/usr/bin/ls
    [root@oldboyedu ~]# which cp
    alias cp='cp -i'
    	/usr/bin/cp
    [root@oldboyedu ~]# which ip
    /usr/sbin/ip
    [root@oldboyedu ~]# which cd
    /usr/bin/cd
    

3、系统变量(系统查找命令的位置)

  • $PATH 超重点
[root@oldboyedu ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#系统默认从上面路径查找,以:分割,每分割一次为一个路径
#示例一
[root@oldboyedu ~]# cat /usr/bin/cc
echo $1
[root@oldboyedu ~]# chmod +x /usr/bin/cc
[root@oldboyedu ~]# cc sun
sun
[root@oldboyedu ~]# which cc
/usr/bin/cc

4、显示命令及其相关文件全路径

  • whereis

    [root@oldboyedu ~]# whereis ls
    ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
    [root@oldboyedu ~]# whereis cp
    cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz
    
    • -b 显示二进制命令文件路径

      [root@oldboyedu ~]# whereis -b cp
      cp: /usr/bin/cp
      

5、快速定位文件路径

  • locate

    • 查找文件路径,是从数据库查询
    [root@oldboyedu ~]# yum provides locate  #查看命令所需要的rpm包
    [root@oldboyedu ~]# yum install mlocate -y
    [root@oldboyedu ~]# updatedb #更新库
    [root@oldboyedu ~]# locate ls
    

6、查找目录下的文件

  • find

    • 查找原理:磁盘遍历 速度慢
    [root@oldboyedu ~]# touch oldboy.txt
    [root@oldboyedu ~]# find ~ -name "oldboy.txt"
    /root/oldboy.txt
    
    
    • 模糊查找
    [root@oldboyedu ~]# find ~ -name "oldboy*"
    /root/oldboy.txt
    [root@oldboyedu ~]# find /etc/sysconfig/ -name "ifcfg*"
    /etc/sysconfig/network-scripts/ifcfg-lo
    /etc/sysconfig/network-scripts/ifcfg-eth0
    
    
    • -type 按文件类型查找
    [root@oldboyedu ~]# find /etc/sysconfig/ -type f -name "ifcfg-eth0"   #f文件
    /etc/sysconfig/network-scripts/ifcfg-eth0
    
    [root@oldboyedu ~]# find /etc/ -type d  -name "sysconfig"	#目录
    /etc/sysconfig
    [root@oldboyedu ~]# find /etc/ -type d  -name "sys*"
    /etc/selinux/targeted/active/modules/100/sysadm
    /etc/selinux/targeted/active/modules/100/sysadm_secadm
    /etc/selinux/targeted/active/modules/100/sysnetwork
    /etc/selinux/targeted/active/modules/100/sysstat
    /etc/selinux/targeted/active/modules/100/systemd
    /etc/systemd
    /etc/systemd/system
    /etc/systemd/system/system-update.target.wants
    /etc/systemd/system/sysinit.target.wants
    /etc/dbus-1/system.d
    /etc/sysctl.d
    /etc/sysconfig
    /etc/xdg/systemd
    /etc/NetworkManager/system-connections
    /etc/latrace.d/headers/sysdeps
    
    • !取反

      [root@oldboyedu ~]# find /etc/sysconfig/network-scripts/ -type f ! -name "ifcfg-eth0"
      /etc/sysconfig/network-scripts/ifcfg-lo
      /etc/sysconfig/network-scripts/ifdown-bnep
      /etc/sysconfig/network-scripts/ifdown-eth
      /etc/sysconfig/network-scripts/ifdown-ippp
      /etc/sysconfig/network-scripts/ifdown-ipv6
      /etc/sysconfig/network-scripts/ifdown-post
      /etc/sysconfig/network-scripts/ifdown-ppp
      /etc/sysconfig/network-scripts/ifdown-routes
      /etc/sysconfig/network-scripts/ifdown-sit
      /etc/sysconfig/network-scripts/ifdown-tunnel
      /etc/sysconfig/network-scripts/ifup-aliases
      /etc/sysconfig/network-scripts/ifup-bnep
      /etc/sysconfig/network-scripts/ifup-eth
      /etc/sysconfig/network-scripts/ifup-ippp
      /etc/sysconfig/network-scripts/ifup-ipv6
      /etc/sysconfig/network-scripts/ifup-plip
      /etc/sysconfig/network-scripts/ifup-plusb
      /etc/sysconfig/network-scripts/ifup-post
      /etc/sysconfig/network-scripts/ifup-ppp
      /etc/sysconfig/network-scripts/ifup-routes
      /etc/sysconfig/network-scripts/ifup-sit
      /etc/sysconfig/network-scripts/ifup-tunnel
      /etc/sysconfig/network-scripts/ifup-wireless
      /etc/sysconfig/network-scripts/init.ipv6-global
      /etc/sysconfig/network-scripts/network-functions
      /etc/sysconfig/network-scripts/network-functions-ipv6
      /etc/sysconfig/network-scripts/ifdown-Team
      /etc/sysconfig/network-scripts/ifdown-TeamPort
      /etc/sysconfig/network-scripts/ifup-Team
      /etc/sysconfig/network-scripts/ifup-TeamPort
      
      
    • -exec 对查找的动作在处理

      • {} 把前面查找到的结果放到这里
      • 注意使用这个命令时{}和;中间必须有空格
      • \代表转义,这里是把;转换成原本的意思
      [root@oldboyedu ~]# find ~ -type f -name "oldboy*"
      /root/oldboy.txt
      [root@oldboyedu ~]# find ~ -type f -name "oldboy*" -exec rm -f {} \;
      [root@oldboyedu ~]# ls
      anaconda-ks.cfg
      
      
    • -mtime 按修改时间查找

      • +n 几天之前
      • n 几天
      • -n 几天之后
      [root@oldboyedu ~]# find ~ -type f -mtime +3  #三天之前
      /root/.bash_logout
      /root/.bash_profile
      /root/.bashrc
      /root/.cshrc
      /root/.tcshrc
      /root/anaconda-ks.cfg
      /root/.bash_history
      [root@oldboyedu ~]# find ~ -type f -mtime +1  #一天之前
      /root/.bash_logout
      /root/.bash_profile
      /root/.bashrc
      /root/.cshrc
      /root/.tcshrc
      /root/anaconda-ks.cfg
      /root/.bash_history
      [root@oldboyedu ~]# find ~ -type f -mtime 3  #第三天
      [root@oldboyedu ~]# find ~ -type f -mtime -3 #三天之后
      /root/.viminfo
      
      

7、分组(默认空格)

  • xargs

    • -n 指定几个为一组
    [root@oldboyedu ~]# echo {1..10} > text.txt
    [root@oldboyedu ~]# xargs -n 3 < text.txt 
    1 2 3
    4 5 6
    7 8 9
    10
    [root@oldboyedu ~]# xargs -n 5 < text.txt 
    1 2 3 4 5
    6 7 8 9 10
    [root@oldboyedu ~]# xargs -n 1 < text.txt 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@oldboyedu ~]# xargs  < text.txt 
    1 2 3 4 5 6 7 8 9 10
    
    • -d 指定分隔符
    [root@oldboyedu ~]# xargs -n 1 < text.txt > text1.txt
    [root@oldboyedu ~]# cat text.txt 
    1 2 3 4 5 6 7 8 9 10
    [root@oldboyedu ~]# xargs -d "\n" < text1.txt 
    1 2 3 4 5 6 7 8 9 10
    [root@oldboyedu ~]# xargs -d "\n" -n 1 < text1.txt 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@oldboyedu ~]# xargs -d "\n" -n 3 < text1.txt 
    1 2 3
    4 5 6
    7 8 9
    10
    
    [root@oldboyedu ~]# xargs < text1.txt 
    1|2|3|4|5|6|7|8|9|10
    [root@oldboyedu ~]# xargs -d "|" < text1.txt 
    1 2 3 4 5 6 7 8 9 10
    
    
    • | 管道符
      • 把管道的左边的结果赋给右边执行
    [root@oldboyedu ~]#  find /etc/sysconfig/network-scripts/ -type f  -name "ifcfg-eth0" | xargs ls -l 
    -rw-r--r--. 1 root root 362 Apr  4 18:08 /etc/sysconfig/network-scripts/ifcfg-eth0
    
    
    • 特殊 -i 把{}当做前面只查找的结果

      [root@oldboyedu ~]#  find /etc/sysconfig/network-scripts/ -type f  -name "ifcfg-eth0" | xargs  cp {}  /opt/
      cp: target ‘/etc/sysconfig/network-scripts/ifcfg-eth0’ is not a directory
      [root@oldboyedu ~]#  find /etc/sysconfig/network-scripts/ -type f  -name "ifcfg-eth0" | xargs  -i cp {}  /opt/
      [root@oldboyedu ~]# ll /opt/
      total 4
      -rw-r--r--. 1 root root 362 Apr  9 19:00 ifcfg-eth0
      
      [root@oldboyedu ~]#  find /etc/sysconfig/network-scripts/ -type f  -name "ifcfg-eth0" | xargs -i  mv {}  /opt/
      [root@oldboyedu ~]# ll /opt/
      total 4
      -rw-r--r--. 1 root root 362 Apr  4 18:08 ifcfg-eth0
      
      
      

8、显示系统时间和日期

  • date

    • -s 设置系统时间

      [root@oldboyedu ~]# date 
      Thu Apr  9 19:01:57 CST 2020
      [root@oldboyedu ~]# date -s "2020/01/01 00:00:00"
      Wed Jan  1 00:00:00 CST 2020
      [root@oldboyedu ~]# date
      Wed Jan  1 00:00:03 CST 2020
      [root@oldboyedu ~]# clock -w  #计入到主板里
      
      [root@localhost ~]# date +%F  #年月日
      2020-01-01
      [root@localhost ~]# date +%Y	#年
      2020
      [root@localhost ~]# date +%y	#年后两位
      20
      [root@localhost ~]# date +%m	#月
      01
      [root@localhost ~]# date +%d	#日
      01
      [root@localhost ~]# date +%H     #时
      00
      [root@localhost ~]# date +%M	 #分
      02
      [root@localhost ~]# date +%S	 #秒
      15
      

9、打包压缩

  • tar
    • -z 压缩
    • -c 创建
    • -v 详情
    • -f 文件
    • -t 查看
    • -C 指定位置解压
    • -x 解压
    • -h 压缩链接文件
[root@oldboyedu /]# tar -zcvf data.tar.gz ./data
./data/
./data/1.txt
./data/2.txt
./data/3.txt
./data/4.txt
./data/5.txt
./data/6.txt
./data/7.txt
./data/8.txt
./data/9.txt
./data/10.txt
./data/a/
./data/b/
[root@oldboyedu /]# tar -zcvf /opt/data.tar.gz ./data
./data/
./data/1.txt
./data/2.txt
./data/3.txt
./data/4.txt
./data/5.txt
./data/6.txt
./data/7.txt
./data/8.txt
./data/9.txt
./data/10.txt
./data/a/
./data/b/
[root@oldboyedu /]# tar -tf /opt/data.tar.gz 
./data/
./data/1.txt
./data/2.txt
./data/3.txt
./data/4.txt
./data/5.txt
./data/6.txt
./data/7.txt
./data/8.txt
./data/9.txt
./data/10.txt
./data/a/
./data/b/

猜你喜欢

转载自www.cnblogs.com/sunyuhang1/p/12668985.html