• 3.shell编程-文件查找之find命令


    3.1.语法格式

    find [路劲][选项][操作]

    选项参数对照表

    3.2.-name   

    查找/etc/目录下以.conf结尾的文件

    find /etc/ -name "*.conf"

    -iname   不区分大小写

    find /etc/ -iname "*.conf"

    -user      查找当前目录为root用户的文件

    find ./ -user root

    3.3.-type   

    文件的类型

    • f     文件
    • d    目录
    • c    字符设备文件
    • b    块设备文件
    • l     链接文件
    • p    管道文件 
    find . -type f
    
    find . -type d

    3.4.-size

    文件大小

    • -n    小与n的文件
    • +n   大于n的文件

     查找/etc目录下小与100k的文件

    find /etc -size -100k

    查找/etc目录下大于1M的文件

    find /etc -size +1M

    3.5.-mtime

    修改时间

    • -n    n天以内修改的文件
    • +n   n天以外修改的文件
    • n     正好n天修改的文件

     查找/etc目录下5天之内修改并且以conf结尾的文件

    find /etc -mtime -5 -name '*.conf'

    查找/etc目录下10天之前修改并且属主为root的文件

    find /etc -mtime +10 -user root

    3.6.-mmin

    • -n    n分钟以内修改的文件
    • +n   n分钟以外修改的文件

    修改/etc目录下30分钟以内修改的目录

    find /etc -mmin -30 -type d

    3.7.-mindepth 

    表示从n级子目录开始搜索

    find /etc -mindepth 3 -type -f

    -madepth n

    表示最多搜索到n-1级子目录

    3.8.操作-exec

    对搜索的文件常用操作

    •  -print   打印输出
    • -exec    对文件执行特定的操作
    • -ok        和exec功能意义,只是每次操作都会给用户提示

    -exec的格式为

    -exec 'command' {} 

    例子一:

    搜索/home/shell_learn/下的文件,文件名以.sh结尾,且修改时间在一个星期之内的,然后将其删除

    #打印
    find /home/shell_learn/ -type f -name '*.sh' -mtime -7 -print
    
    #复制
    find /home/shell_learn/ -type f -name '*.sh' -mtime -7 -exec cp {} /home/shell_learn/test/ ;
    
    #删除
    find /home/shell_learn/ -type f -name '*.sh' -mtime -7 -exec rm -rf {} ;

    3.9.locate命令

    locate不同于find命令是在整块磁盘中搜索,locate命令是在数据库文件中查找

    find是默认全局匹配,locate则是默认部分匹配

    updatedb命令

    • 用户更新/var/lib/mlocate/mlocate.db
    • 所使用的配置文件/etc/updatedb.conf

     实例:updatedb命令把文件更新到数据库(默认是第二天系统才会自动更新到数据库),否则locate查找不到

    [root@VM_0_9_centos shell_learn]# touch 789.txt
    [root@VM_0_9_centos shell_learn]# 
    [root@VM_0_9_centos shell_learn]# locate 789.txt
    [root@VM_0_9_centos shell_learn]# 
    [root@VM_0_9_centos shell_learn]# updatedb
    [root@VM_0_9_centos shell_learn]# 
    [root@VM_0_9_centos shell_learn]# locate 789.txt
    /home/shell_learn/789.txt
    [root@VM_0_9_centos shell_learn]#

    3.10 .whereis命令

    实例

    [root@VM_0_9_centos shell_learn]# whereis mysql
    mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
    [root@VM_0_9_centos shell_learn]# 
    [root@VM_0_9_centos shell_learn]# whereis -b mysql
    mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql
    [root@VM_0_9_centos shell_learn]# 
    [root@VM_0_9_centos shell_learn]# whereis -m mysql
    mysql: /usr/share/man/man1/mysql.1.gz
    [root@VM_0_9_centos shell_learn]# 

    3.11.which

    作用:仅查找二进制程序文件

    [root@VM_0_9_centos shell_learn]# which mysql
    /usr/bin/mysql
    [root@VM_0_9_centos shell_learn]# 

    3.12.各查找命令总结

     

     
     
     
  • 相关阅读:
    Linux系统调优方法
    递归(Recursion)算法
    数据结构之链表
    【日常摸鱼】牛客挑战赛2
    【日常摸鱼】牛客挑战赛1
    组合计数学习笔记1
    To-Do List 2
    20199112 2019-2020-2 《网络攻防实践》第 3 周作业
    Flutter上线项目实战——腾讯点播直播下载
    打开旧Flutter项目说:Your Flutter application is created using an older version of the Android embedding
  • 原文地址:https://www.cnblogs.com/gaidy/p/12068095.html
Copyright © 2020-2023  润新知