Linux查找find命令详解

   2017-02-05 0
核心提示:Linux查找–find命令首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!find命令的格式findpathname-options[ -print -exec -ok ...]pathname #是find命令所查找的目录路径,例如.表示当前目录,/表示根目录-print #表示find命令将匹配的文件输出到标准输出

Linux查找–find命令

首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!

find命令的格式

find  pathname  -options  [ -print -exec -ok ...]

pathname         #是find命令所查找的目录路径,例如.表示当前目录,/表示根目录
-print           #表示find命令将匹配的文件输出到标准输出中
-exec            #表示find命令对匹配的文件执行该参数给出的shell命令。相应命令的形式为 ‘cmd’ {} \;
-ok              #它的作用和-exec一样,只是需要用户交互,更安全

find命令的选项

-name            #按照文件名查找文件
-perm            #按照权限查找文件
-prune           #使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略
-user            #按照文件属主来查找文件
-group           #按照文件数组来查找文件
-mtime -n +n     #按照文件的更改时间来查找文件
      -n 表示从此刻算起,文件的更改是在n天以内
      +n 表示文件的更改时间是在n天以前
      find命令还有-atime和-ctime选项,和-mtime选项的时间规定类  似   
-nogroup         #查找无有效属组的文件,即该文件所属的组在/etc/groups中不存在
-nouser          #查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
-newer file1 ! file2 #查找更改时间比file1新但比file2旧的文件
-type

 b:表示块设备文件     block
 d:表示目录         directory
 c:表示字符设备文件   char
 p:表示管道文件      pipe
 l:表示符号链接文件   link
 f:表示普通文件      file

-depth           #在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
-fstype          #表示查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
-mount           #表示在查找文件时不跨越文件系统的mount点
-follow          #表示如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
-cpio            #表示对匹配的文件使用cpio命令,将这些文件备份至磁带设备中

find示例:

1、在logs目录下查找更改时间在5日以前的文件并删除它们
   find /logs -mtime +5 -exec rm {} \;
2、在当前目录中查找以.log结尾、更改时间在5日以上的文件,并删除,但在删除前给出提示
   find . -name “*.log” -mtime +5 -ok rm {} \;
3、先用find命令匹配所有文件名为”passwd*”的文件,然后执行grep看看这些文件中是否存在一个sam的字符串
   find / -name "passwd*" -exec grep "sam" {} \;
4、查找当前用户主目录下的所有文件
   find ~
5、查找当前目录下644权限的文件 
   find . -perm 644
6、查找系统当中所有长度为0的普通文件,并列出它们的完整路径
   find / -type f -size 0 -exec ls -l {} \;
7、查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前进行提示   
   find /var/log -type f -mtime +5 -ok rm {} \;
8、查找当前目录中所有属于root组的文件
   find . -group root -exec ls -l {} \;
9、find命令将列出目录中访问时间在7日以内且含有数字后缀的admin.log文件
   find . -name "admin.log[0-9]*" -atime -7 -exec ls -l {} \;

用xargs来配合find工作

在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对传递给exec的命令长度是有限制的,这样,在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是”参数列太长”或”参数列溢出”。这就是xargs命令的用户所在,特别是与find命令一起使用

   find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它就可以先处理最先获取的那一部分文件,然后是下一批,并且如此继续下去。
查找root下面的每个文件,然后使用file查看文件的类别
find /root/ -type f | xargs file
查找root下面的777权限的文件,如果找到,都改为644权限
find /root -perm 777 | xargs chmod 644
查找系统中的所有文件,并过滤出文件中带有rmt的文件
find / -type f | xarfs grep rmt 
grep -rl rmt /   #也可以 r代表递归,l代表只列出匹配的文件

更详细强大的find实例

一、使用name选项

1、在当前目录及子目录中查找所有的*.txt文件     
    find . -name "*.txt"
2、在当前目录及子目录中查找一个大写字母开头的文件
    find . -name "[A-Z]*"
3、想在/etc目录中查找文件名以host开头的文件
    find /etc -name "host*
4、查找$HOME目录中的文件
    find ~
5、想要让系统高负荷运行,从根目录下面查找所有文件
    find / -name "*"
6、在当前目录中查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件
    find / -name "[a-z][a-z][0-9][0-9].txt"

??、使用perm选项

找出当前文件夹下权限为755的文件
    find . -perm 755

三、使用user和mount选项

1、在宿主目录下查找属主为sam的文件
   find ~ -user sam | xargs ls -l
2、查找已经删除用户以前的文件
   find / -nouser sam

四、按照更改时间或访问时间等查找文件

-:限定更改时间在距今n日以内的文件
+:限定更改时间是在n日以前的文件

1、在根目录下查找更改时间为最近5日的文件 
   find / -mtime -5
2、在根目录下查找更改时间为3日以前的文件
   find / -mtime +3

五、查找比某个文件新或旧的文件

1、查找比/root/a/a文件新的文件
   find / -newer /root/a/a 
2、查找比wanglei文件新的文件
   find / -newer wanglei

    在进行系统维护时,我们经常遇到一种情况,即发现磁盘在不停地发生写现象,这时候我们要定位这个正在写的文件,可以选择建立一个文件,比如test,然后用以下命令找出这个频繁写磁盘的文件(最好带上一些限制大小的参数来精确定位)

touch new1
touch new2
find / -newer new1 -o -path "/proc" -prune
找出比new1新的文件,由于/proc目录中的文件一直在变化,所以可以排除

六、使用type选项

1、在/etc目录下查找所有的目录
   find /etc -type d | xargs file
2、在当前目录下查找除目录以外的所有类型的文件
   find /etc ! -type d | xargs file
3、在/etc/目录一下查找所有的符号链接文件
   find /etc -type l | xargs file 

八、使用size选项

dd if=/dev/zero of=/root/100M bs=100M count=1
dd if=/dev/zero of=/root/10M bs=10M count=1
dd if=/dev/zero of=/root/30M bs=30M count=1
1、查找当前目录下大于5M的文件
  find . -size +5M
2、查找当前目录下大与20M的文件
  find . -size +20M
3、查找当前目录下大与40M的文件
  find . -size +40M

Linux find 命令用法总结 http://www.linuxidc.com/Linux/2015-04/116854.htm

Linux下的文件查找命令——find http://www.linuxidc.com/Linux/2016-05/131826.htm

Linux下查找文件find命令 http://www.linuxidc.com/Linux/2014-10/108575.htm

文本查找利器find的使用 http://www.linuxidc.com/Linux/2014-03/97559.htm

功能强大的find命令 http://www.linuxidc.com/Linux/2014-01/95236.htm

Linux系统find命令详解 http://www.linuxidc.com/Linux/2014-06/103232.htm

Linux文件搜索命令 find http://www.linuxidc.com/Linux/2016-11/137267.htm

5分钟学会find命令 http://www.linuxidc.com/Linux/2016-11/137051.htm

find命令基本使用一览 http://www.linuxidc.com/Linux/2016-07/133273.htm

Linux基础知识:find命令的使用 http://www.linuxidc.com/Linux/2016-09/134947.htm

本文永久更新链接地址 http://www.linuxidc.com/Linux/2017-01/140011.htm

 
标签: Linux命令
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 每天一条linux命令——halt
    halt命令用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 语法:halt(选项)选项:-d:不要在wtmp中记录;-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;-i:
    02-10
  • 几个linux命令查看堆栈内存问题 几个linux命令
      公司编写代码,发现整个在程序里面调用system时候总是失败,原因是can't allocate memory ,根本原因不是内存不足,而是堆栈内存不够。使用ulimit -s 2048后有所好转但是发现一旦系统进程开启多了后仍然会挂。后来使用objdump -x 后发现了原因有个动态库
    02-09
  • Linux命令总结--rm命令 linux的rmp命令
    (来源于http://www.cnblogs.com/xqzt/p/5398919.html)1、命令简介rm(Remove file 删除目录或文件)删除文件,对于链接文件,只是删除整个链接文件,而原有文件保持不变。新手在删除文件之前一定要知道这些:很重要1.可以用mv代替rm的绝对不要用rm,不要着急
    02-09
  • Linux命令行批量创建目录详解 linux创建目录
    以前一直用-p创建目录链,觉得很方便了。在空目录/opt/app/myapp里创建src,再创建main,再创建javamkdir -p /opt/app/myapp/src/main/java没想到还可以这样玩##¥%……*(root@vm1:~/tmp# mkdir -p src/{{main,test}/{java,resources},main/webapp}root@vm1:
    02-09
  • Linux命令之乐--script和scriptplay
    script和scriptplay可以把终端会话记录到一个文件中,可以用来制作命令行教学视屏。 开始录制会话[root@new test]# script -t 2timing.log -a output.sessionScript started, file is output.session[root@new test]# echo hellohello[root@new test]# echo
    02-09
  • java 开发常用的Linux命令
    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*.xml" |xargs grep "hello world" 递归查找所有文件内容中包含hello world的xml文件grep -H 'spring' *.xml 查找所
    02-09
  • 常用Linux命令整理 Linux常用命令总结
    常用Linux命令整理常见系统命令export 查看或修改环境变量# 例:临时修改命令提示符为字符串$export PS1=$# 例:临时修改命令提示符显示系统时间 时间使用\t 表示export PS1="[\u@\h \t \W]\$"man 查看linux系统的手册# 例:查看ls命令如何使用man ls # 回车
    02-09 Linux
  • linux命令行—《命令行快速入门》 linux常用命令csdn
    linux命令行—《命令行快速入门》 linux常用命
    pwd print working directory 打印工作目录hostname my computer's network name 电脑在网络中的名称mkdir make directory 创建路径cd change directory 改变路径ls list directory 列出路径下的内容rmdir remove directory 删除路径pushd push directory 推
    02-09
  • Linux命令(五) 五个常用的linux命令
    Linux命令(五) 五个常用的linux命令
    jenkins触发钉钉报警机制1、安装钉钉插件钉钉报警需要安装Ding Talk插件,支持钉钉报警2、打开钉钉创建钉钉机器人2.1选择机器人类型——自定义2.2添加机器人2.3填写机器人信息填写机器人姓名—设置安全设置为加密类型,并复制出来加密值2.4创建完成保持webhoo
    02-09
  • 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
    03_Linux基础-文件类型-主辅提示符-第1提示符-L
    03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-shell-ln-env-set-which-rpm-/usr-/与/root-hostname-vim-cat-pwd-alias-unalias-ls-ASCII-wc-chmod博客
    02-09
点击排行