• Linux find命令使用方法


      Linux中find命令用来在指定目录下查找文件。通过组合不同参数可以在linux系统中快速查找需要的文件或目录。

    find命令语法

    格式:find pathname -options [ -print | -exec | -ok | -print0 ]

      pathname: 查找路径设置

      options: 选项。每一个选项前面都会带一个横杠-,常用选项如下:

    -name:按照文件名来查找文件(大小写匹配敏感),后面跟完整文件名或者文件模式,用双引号包含。
    -iname:按照文件名来查找文件(忽略大小写),后面跟文件名或者文件模式,用双引号包含。
    -mtime [ n| -n| +n ]:按照文件的更改时间来查找文件,n表示天数。分别表示第n天、n天以内及n天以前。
    -type [ f| d| b| c| p| l ]:查找某一类型的文件。比如f-文件,d-目录(常用),b-设备文件,c-字符设备文件,p-管道文件,l-符号链接文件。
    -size n[B|KB|M] :查找大小为n的文件,n表示文件大小,可以带单位。比如+100M表示查找大于100M文件,-100M表示查找小于100M文件,100M表示查找等于100M文件
    -depth:查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
    -maxdepth:控制查找目录层级数。如果使用,该参数通常放在第一个。比如在当前目录查找-maxdepth 1-prune: 不在当前指定的目录中查找,如果同时使用了-depth选项,那么-prune选项会被忽略

    -print: find命令将匹配的文件输出到标准输出。

    -print0: 可以处理文件名包含空格情况,建议find与xargs结合时使用。

    -exec: 对匹配的文件执行该参数所给出的shell命令。相应的目录形式为'command' {} ;,注意{}和;之间的空格

    -ok:  有提示,很少用。

    find查找实例

      (1)按文件名查找

    find /etc -name "*.txt"  #在/etc目录下以.txt后缀的文件
    find /etc -name "[A-Z]*" #在/etc目录下查找以大写开头的文件
    find /etc -name "host*" #在/etc目录下查找以host开头的文件
    find . -maxdepth 1 -type f -name "*.txt" -o -name "*.unl" #查找当前目录下txt和unl后缀的文件
    find . -maxdepth 1 -type f ( -name "*.txt" -o -name "*.unl" ) #同上

      (2)按时间范围查找

    find /home -type f -mtime 5 #查找/home目录下第5天修改的文件
    find /home -type f -mtime -5 #查找/home目录下5天内修改的文件
    find /home -type f -mtime +5 #查找/home目录下5天前修改的文件
    find /home -type f -cmin +5 #查找/home目录下5分钟前修改的文件

      (3)按文件类型查找

    find /etc -type f #查找/etc目录下所有的普通文件
    find /etc -type d #查找/etc目录下所有的目录
    find /etc ! -type d #查找/etc目录下所有非目录类型文件
    find /etc -type l #查找/etc目录下所有的符号链接

      (4)按文件大小查找

    find /home -type f -size 100M #查找/home目录下等于100M的文件
    find /home -type f -size +100M #查找/home目录下大于100M的文件
    find /home -type f -size -100M #查找/home目录下小于100M的文件

      (5)按文件属主、属组查找

    find /tmp -user oracle #在/tmp目录下查找属主为oracle的文件
    find /etc -group dba  #在/etc目录下查找属组为dba的文件

      (6)忽略指定目录查找

    find -path /opt/bin -prune -o -type f "*.tar.gz" -print #忽略单个目录
    find / -maxdepth ( -path /opt -o -path /var ) -prune -o -type f "*.tar.gz" -print #忽略多个目录

    find组合命令实例(xargs&exec)

      (1)查找并删除

    find . -type f -name "*.aud" -print0 | xargs -0 -n 5000 rm  #查找当前目录下所有的.aud文件并删除
    find . -type f -name "*.aud" -exec rm -f {} ; #同上
    find . -maxdepth 1 -name "*.tar.gz" -exec rm -rf {} ; #查找当前目录下大于100M的.tar.gz文件包并删除
    find /home -type f -mtime +7 -exec rm {} ; #查找/home目录中更改时间在7日以前的普通文件并删除

      (2)查找包含指定内容的文件

    find / -type f -print | xargs grep "device" #查找包含device单词的文件
    find / -type f -name "*.cfg" -print | xargs grep -l "127.0.0.1" #查找包含127.0.0.1的.cfg后缀的配置文件

      (3)查找并替换文件内容

    find / -type f -name "*.cfg" -print | xargs sed -i 's/127.0.0.1/192.168.0.1/g' #查找包含127.0.0.1的.cfg后缀的配置文件并将127.0.0.1替换为192.168.0.1

      (4)查找及其他相关操作

    find / -type f -size 0 -exec ls -l {} ; #查找大小为0的文件,并列出完整路径
    find . -type f -name "*.txt" -exec mv {} /tmp ; #将查找到的.txt文件移动到/tmp目录
    find /etc -perm -7 -print | xargs chmod o-w #在/etc目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限
    find . -type f -name ".txt" -exec cp {} -C {}.bak ; #备份所有.txt文件。这是使用两个{}的方式

     

  • 相关阅读:
    软件测试第三次作业2
    软件测试第三次作业1
    软件测试第二次作业2
    软件测试第二次作业1
    只要你足够努力,好运就会降临。
    实验六
    实验二
    个人简介
    第六次作业
    第五次博客作业
  • 原文地址:https://www.cnblogs.com/linyfeng/p/6849949.html
Copyright © 2020-2023  润新知