zoukankan      html  css  js  c++  java
  • 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_*"
    
  • 相关阅读:
    Atom | 编辑器Atom的使用小结
    离散数学 | ∅ 与 {∅} 出现在离散数学幂集合中
    Excel | 如何用Excel实现证件照底色调换
    Awesome图标 | 如何在某些编辑软件中使用Font Awesome字体图标
    将SSH的秘钥每次输入的密码去掉
    用canvas 画一个水位波纹上升下降的进度球
    解决Enter passphrase for key '/Users/mac/.ssh/id_rsa':的问题
    vue 注册全局过滤器
    解决vue的父组件打开子组件弹窗只走一次mounted的问题
    forEach终止循环的方法
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12310381.html
Copyright © 2011-2022 走看看