欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux文件类型及查找命令实践

程序员文章站 2022-04-16 11:42:40
1、文件属性 文件属性是指: 文件的大小,创建时间,类型,权限,属组等。 文件的属性总共10列 第一列 是文件的唯一标识,也称之为 inode(节点)号 第二列 第一个字符 是指文件类型 \ 是代表文件类型为普通文件 (用f表示) d 是代表文件类型为目录 (用d表示) l 是代表文件类型为连接文件 ......

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/