• Linux系统之find


    01 Linux系统查找命令

    find概述

    Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

    find [路径] [类型] [动作] [内容]

    find参数

    -name:指定名称
    
    -user:按文件属主查找
    -group:按文件属组查找
    -path:文件/目录匹配查找
    -type:文件类型
      -f   #普通文件
      -d   #目录
      -c   #字符
      -b   #块设备
      -s   #socket
      -l   #链接文件 
    
    -mtime:按修改时间查找
    -atime:按文件访问时间查找
    -ctime:按文件创建时间查找
    #时间数字:+7 七天以前、7 第七天、-7 最近七天
    
    -perm:按权限查找
    
    -maxdepth:查找深度
    
    -size:+10k 大于10k、-100k 小于100k
    

    find名称查找

    1.环境模拟

    rm -rf /data/
    mkdir -p /data
    touch /data/{a,b,c}.txt
    
    [root@xmh ~]# ls -l /data/
    total 0
    -rw-r--r-- 1 root root 0 Jan 27 20:35 a.txt
    -rw-r--r-- 1 root root 0 Jan 27 20:35 b.txt
    -rw-r--r-- 1 root root 0 Jan 27 20:35 c.txt
    

    2.实践

    //查找/data目录下a.txt文件
    [root@xmh ~]# find /data/ -name "a.txt"
    /data/a.txt
    
    //查找/data目录下以.txt结尾的文件
    [root@xmh ~]# find /data/ -name "*.txt"
    /data/a.txt
    /data/b.txt
    /data/c.txt
    

    find类型查找

    1.环境模拟

    rm -rf /data/
    mkdir /data/{dir1,dir2,link} -p
    touch /data/{a..c}.txt
    ln -s /data/link /data/sort_link
    

    2.实践

    -type:文件类型
      -f   #普通文件
      -d   #目录
      -c  #字符
      -b  #块设备
      -s  #socket
      -l  #链接文件 
      
    //查找/data目录下的所有普通文件
    [root@xmh ~]# find /data/ -type f
    /data/a.txt
    /data/b.txt
    /data/c.txt
    
    //查找/data目录下的所有软链接
    [root@xmh ~]# find /data/ -type l
    /data/sort_link
    
    //查找/data目录下的所有目录
    [root@xmh ~]# find /data/ -type d
    /data/
    /data/dir1
    /data/dir2
    /data/link
    

    find大小查找

    1.环境模拟

    rm -rf /data/
    mkdir /data -p
    touch /data/{a..f}.txt
    seq 100000 >/data/a.txt  
    seq 59000 >/data/b.txt     
    seq 20000 >/data/c.txt  
    seq 999999 >/data/d.txt  
    seq 9999999 >/data/e.txt  
    seq 999999999 >/data/f.txt 
    
    [root@xmh ~]# ls -lh /data/
    total 9.3G
    -rw-r--r-- 1 root root 576K Jan 27 20:15 a.txt
    -rw-r--r-- 1 root root 335K Jan 27 20:15 b.txt
    -rw-r--r-- 1 root root 107K Jan 27 20:15 c.txt
    -rw-r--r-- 1 root root 6.6M Jan 27 20:16 d.txt
    -rw-r--r-- 1 root root  76M Jan 27 20:16 e.txt
    -rw-r--r-- 1 root root 9.3G Jan 27 20:16 f.txt
    

    2.实践

    -size:+10k 大于10k、-100k 小于100k
    
    //查找/data目录下大于100K并小于300K的文件
    [root@xmh ~]# find /data/ -size +100k -size -300k |xargs  ls -lh
    -rw-r--r-- 1 root root 107K Jan 27 20:15 /data/c.txt
    
    //查找/data目录下大于500K并小于100M的文件
    [root@xmh ~]# find /data/ -size +500k -size -100M  |xargs  ls -lh
    -rw-r--r-- 1 root root 576K Jan 27 20:15 /data/a.txt
    -rw-r--r-- 1 root root 6.6M Jan 27 20:16 /data/d.txt
    -rw-r--r-- 1 root root  76M Jan 27 20:16 /data/e.txt
    
    //查找/data目录下大于1G的文件
    [root@xmh ~]# find /data/ -size +1G |xargs ls -lh
    -rw-r--r-- 1 root root 9.3G Jan 27 20:16 /data/f.txt
    

    find权限查找

    1.环境模拟

    rm -rf /data/
    mkdir /data -p
    touch /data/{a..c}.txt
    chmod 777 /data/a.txt    
    chmod 600 /data/b.txt  
    chmod 000 /data/c.txt 
    

    2.实践

    -perm:按权限查找
    
    [root@xmh ~]# ll /data/
    total 0
    -rwxrwxrwx 1 root root 0 Jan 27 20:20 a.txt
    -rw------- 1 root root 0 Jan 27 20:20 b.txt
    ---------- 1 root root 0 Jan 27 20:20 c.txt
    
    //查找/data目录下权限为777的文件
    [root@xmh ~]# find /data/ -perm 777  |xargs ls -l
    -rwxrwxrwx 1 root root 0 Jan 27 20:20 /data/a.txt
    
    //查找/data目录下权限为600的文件
    [root@xmh ~]# find /data/ -perm 600  |xargs ls -lh 
    -rw------- 1 root root 0 Jan 27 20:20 /data/b.txt
    
    //查找/data目录下权限为000的文件
    [root@xmh ~]# find /data/ -perm 000  |xargs ls -lh   
    ---------- 1 root root 0 Jan 27 20:20 /data/c.txt
    

    find用户查找

    1.环境模拟

    rm -rf /data/
    mkdir /data -p
    touch /data/{a..d}.txt
    chown sa.sa /data/a.txt
    chown xmh.xmh /data/c.txt
    chown xmh /data/d.txt
    
    [root@xmh ~]# ll -l /data/
    total 0
    -rw-r--r-- 1 sa   sa   0 Jan 27 20:26 a.txt
    -rw-r--r-- 1 root root 0 Jan 27 20:26 b.txt
    -rw-r--r-- 1 xmh  xmh  0 Jan 27 20:26 c.txt
    -rw-r--r-- 1 xmh  root 0 Jan 27 20:26 d.txt
    

    2.实践

    -user:按文件属主查找
    -group:按文件属组查找
    
    //查找/data目录下属于sa用户的文件
    [root@xmh ~]# find /data/ -user sa |xargs ls -l
    -rw-r--r-- 1 sa sa 0 Jan 27 20:24 /data/a.txt
    
    //查找/data目录下属于root用户的文件
    [root@xmh ~]# find /data/ -type f  -user root  |xargs ls -l
    -rw-r--r-- 1 root root 0 Jan 27 20:26 /data/b.txt
    
    //查找/data目录下属于root用户组的文件
    [root@xmh ~]# find /data/ -type f -group root |xargs  ls -l
    -rw-r--r-- 1 root root 0 Jan 27 20:26 /data/b.txt
    -rw-r--r-- 1 xmh  root 0 Jan 27 20:26 /data/d.txt
    

    find时间查找

    //时间数字:+7 七天以前、7 第七天、-7 最近七天
    -mtime:按修改时间查找
    -atime:按文件访问时间查找
    -ctime:按文件创建时间查找
    
    //按修改时间查找七天以前的文件
    [root@xmh ~]# find / -mtime +7
    
    //按文件访问时间查找最近七天的文件
    [root@xmh ~]# find / -atime -7
    
    //按文件创建时间查找第七天的文件
    [root@xmh ~]# find / -atime 7
    

    find动作

    1.环境模拟

    rm -rf /data/
    mkdir /data -p
    touch /data/{a..z}.txt
    

    2.实践

    //结合exec,查找/data目录下类型为 f  且名称为a.txt的文件删除
    [root@xmh ~]# find /data/ -type f -name "a.txt" -exec rm {} ;
    
    //结合管道,查找/data目录下所有以.txt的文件删除
    [root@xmh ~]# find /data -type f -name "*.txt" |xargs  rm -rf  
    
    //结合管道,查找/var/log目录,删除15天以前修改过的文件
    [root@xmh ~]# find /var/log/  -type f  -mtime +15 |xargs rm -f
    
    
    结合exec:将查找到的文件传给"{}",表示对前面查找到的文件,做"rm"动作
    结合管道:将查找到的文件传给管道符xargs rm -f(xanrgs把需要删除的内容变成一行,最后接rm -f 删除,相当于rm -f /data/a.txt /data/b.txt)
    

    find排除目录查找

    //排除/usr和/tmp目录
    [root@xmh ~]# find / ! -path "/usr/*" ! -path "/tmp/*" -type f -name "test_*"
    
  • 相关阅读:
    fatal error LNK1123: 转换到 COFF 期间失败:文件无效或损坏
    CI:模拟进化与遗传算法
    贝叶斯网络
    朴素贝叶斯模型
    概率与不确定性(乘法法则与贝叶斯法则)
    关于“启发式”搜索的一个形象解释
    Python 字符串与数字拼接报错
    无法启动此程序因为计算机中丢失 xxx.dll
    Python 以指定的概率选取元素
    验证码之SimpleCaptcha (二)
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12310381.html
Copyright © 2020-2023  润新知