linux查找find命令详解

6 篇文章 1 订阅

1、find 命令:

1.1、find命令格式:

find  pathname  -options  [ -print -exec -ok command ]   {} \;

  1. pathname : find命令所查找的目录路径。例如用 来表示当前目录,用 / 来表示系统根目录。
  2. -print : find命令将匹配的文件输出到标准输出。
  3. -exec : find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
  4. -ok : 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行

  1. -o         # 或。 例:find   -name ap* -o -name may*   查找以ap或may开头的文件。
  2. -rl         # r代表递归,l代表只列出匹配的文件。
  3. -name   filename             #查找名为filename的文件。例:find   -name   april*   fprint  file        在当前目录下查找以april开始的文件,并把结果输出到file中
  4. -perm                              #按执行权限来查找。例:find   /home   -perm   0700 # 查权限为700的文件或目录。
  5. -user    username            #按文件属主来查找。例:find    /   -user    fred     #查找在系统中属于FRED这个用户的文件
  6. -group  groupname         #按组来查找。例:find   /home   -group   cnscn   # 列出/home内组为cnscn的文件或目录
  7. -mtime    -n  +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
  8. -atime     -n  +n               #按文件访问时间来查.
  9. -ctime     -n  +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
  10. -nogroup                        #查无有效属组的文件,即文件的属组在/etc/groups中不存在。例:find   /home   -nogroup  # 列出/home内不属于本地组的文件或目录
  11. -nouser                          #查无有效属主的文件,即文件的属主在/etc/passwd中不存。例:find   /home   -nouser   #列出/home内不属于本地用户的文件或目录
  12. -newer   file1 ! file2      #查找更改时间比file1新但比file2旧的文件.
  13. -type    b/d/c/p/l/f           #查是块设备、目录、字符设备、管道、符号链接、普通文件
  14. -size      n[c]                  #查长度为n块[或n字节]的文件
  15. -depth                           #使查找在进入子目录前先行查找完本目录。例:find   /home    -name tmp.txt    -maxdepth   4   列出/home内的tmp.txt 查时深度最多为3层
  16. -empty                          #查找大小为0的文件或空目录。例: find   /home   -empty  #查找 /home下大小为0的文件或空目录
  17. -mount                         #表示在查找文件时不跨越文件系统的mount点
  18. -follow                         #表示如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
  19. -cpio                            # 表示对匹配的文件使用cpio命令,将这些文件备份至磁带设备中
  20. -prune                         #忽略某个目录
  21. -fstype                          #表示查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息

在/ l o g s目录中查找更改时间在7日以前的文件并删除它们:find logs/ -type f -mtime +7 -exec rm -f {} \;

2、find应用

在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对传递给exec的命令长度是有限制的,这样,在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是”参数列太长”或”参数列溢出”。这就是xargs命令的用户所在,特别是与find命令一起使用, find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它就可以先处理最先获取的那一部分文件,然后是下一批,并且如此继续下去。

2.1、和xargs搭配用法

#删除/app/logs/目录下的7天前的文件
find /app/logs/ -type f -mtime +7 | xargs rm -f
#删除30天前的目录
find /app/logs/ -type d -mtime +30 |xargs rm -rf

2.2、和exec搭配

#删除/app/logs/目录下的7天前的文件
find /app/logs/ -type f -mtime +7 -exec rm -f {} \;

2.3、和反单引号 搭配使用

rm -f `find /app/logs/ -type f -mtime +7`

3、示例

3.1、根据文件的特征进行查询

find /home/test/ -amin-10       #查找在系统中最后10分钟访问的文件

find /home/test/ -atime-2       #查找在系统中最后48小时访问的文件

find /home/test/ -empty         #查找在系统中为空的文件或者文件夹

find /home/test/ -mmin-5        # 查找在系统中最后5 分钟里修改过的文件

find /home/test/ -mtime-1        #查找在系统中最后24小时里修改过的文件

find /home/ftp/pub -user test    #查找在系统中属于test这个用户的文件

3.2、查找并显示文件

find ./ -name 'start*'  -ls

结果:

[/home/admin/runtime/framework]find ./ -name 'start.properties' -ls
1707335    4 -rw-r--r--   1 admin    admin        2590 Nov 18 14:20 ./start.properties
[/home/admin/runtime/framework]find ./ -name 'start.properties' 
./start.properties


·

  • 1
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值