find 命令格式

1、find命令的一般形式为;

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

2、find命令的参数;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

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

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

-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

3、find命令选项

-name

按照文件名查找文件。

-perm

按照文件权限来查找文件。

-prune

使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user

按照文件属主来查找文件。

-group

按照文件所属的组来查找文件。

-mtime -n +n

按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

-nogroup

查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser

查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

-newer file1 ! file2

查找更改时间比文件file1新但比文件file2旧的文件。

-type

查找某一类型的文件,诸如:

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。

f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount点。

-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:

-amin n

  查找系统中最后N分钟访问的文件

  -atime n

  查找系统中最后n*24小时访问的文件

  -cmin n

  查找系统中最后N分钟被改变文件状态的文件

  -ctime n

  查找系统中最后n*24小时被改变文件状态的文件

 -mmin n

  查找系统中最后N分钟被改变文件数据的文件

  -mtime n

  查找系统中最后n*24小时被改变文件数据的文件

4、使用exec或ok来执行shell命令

使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。

exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中

# find . -type f -exec ls -l {  } \;

-rw-r--r--    1 root     root        34928 2003-02-25  ./conf/httpd.conf

-rw-r--r--    1 root     root        12959 2003-02-25  ./conf/magic

-rw-r--r--    1 root     root          180 2003-02-25  ./conf.d/README

上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。

在/logs目录中查找更改时间在5日以前的文件并删除它们:

$ find logs -type f -mtime +5 -exec rm {  } \;

记住:在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。

在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。

$ find . -name "*.conf"  -mtime +5 -ok rm {  } \;

< rm ... ./conf/httpd.conf > ? n

按y键删除文件,按n键不删除。

任何形式的命令都可以在-exec选项中使用。

在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。

# find /etc -name "passwd*" -exec grep "sam" {  } \;

sam:x:501:501::/usr/sam:/bin/bash

二、find命令的例子;

1、查找当前用户主目录下的所有文件:

下面两种方法都可以使用

$ find $HOME -print

$ find ~ -print

2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;

$ find . -type f -perm 644 -exec ls -l {  } \;

3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;

$ find / -type f -size 0 -exec ls -l {  } \;

4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;

$ find /var/logs -type f -mtime +7 -ok rm {  } \;

5、为了查找系统中所有属于root组的文件;

$find . -group root -exec ls -l {  } \;

-rw-r--r--    1 root     root          595 10月 31 01:09 ./fie1

6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。

该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令

$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7  -ok  rm {  } \;

< rm ... ./admin.log001 > ? n

< rm ... ./admin.log002 > ? n

< rm ... ./admin.log042 > ? n

< rm ... ./admin.log942 > ? n

7、为了查找当前文件系统中的所有目录并排序;

$ find . -type d | sort

8、为了查找系统中所有的rmt磁带设备;

$ find /dev/rmt -print

转载于:https://blog.51cto.com/770485467/555453

find的详细用法及其例子相关推荐

  1. Android命令行工具logcat详细用法!

    logcat是Android中一个命令行工具,可以用于得到程序的log信息. 见板凳详细说明!      本贴内容来自网络,引用网址为:http://hi.baidu.com/%C9%C1%D2%AB ...

  2. __declspec关键字详细用法

    __declspec关键字详细用法 2009-01-21 16:23 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与ext ...

  3. mysql left/right join算法效率分析_mysql left join,right join,inner join超详细用法分析

    MySQL left join,right join,inner join超详细用法分析 下面是例子分析 表A记录如下: aID        aNum 1           a20050111 2 ...

  4. 批处理命令之Start的详细用法-P处理打开IE窗口最大化

          批处理命令之Start的详细用法 (hxzon:运行"start 文件路径"打开新的命令行窗口,加上"""",即 "s ...

  5. spring-aop-@Aspect详细用法

    @AspectJ的详细用法 在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: 一些常见的切入点的例子 execution(public ...

  6. DOS中SET命令的详细用法

    DOS中SET命令的详细用法 例子: @echo off set var=我是值 echo %var% pause 请看 set var=我是值 ,这就是BAT直接在批处理中设置变量的方法! set ...

  7. #前端开发# 【一】 之Animate动画库的安装及详细用法

    #前端开发# 之Animate动画库的安装及详细用法 在前端的开发过程中,我们免不了需要动画来实现更多酷炫效果, 下面主要是介绍Animate这款强大的动画库,以及其安装及使用 相信大家也已经了解过A ...

  8. python3的formatter_python中的formatter的详细用法

    今天抽空学习了一下python中的string service中的formatter的相关用法,主要是为了让自己的代码看起来更加和谐,因为很多java或者c语言过来的开发者都不怎么爱使用python的 ...

  9. Element Ui使用技巧——Form表单的校验规则rules详细说明;element的 form 表单rules详细用法

    本文章是在项目开发时遇到问题看到的一片好文, 摘录自[博客园]–[逍遥云天]. 感谢作者 地址 – https://www.cnblogs.com/xyyt/p/13366812.html 在 [逍遥 ...

最新文章

  1. java for循环返回值_Java中的for循环——通过示例学习Java编程(9)
  2. ORB-SLAM2从理论到代码实现(一):整体框架
  3. java字符串编程_java字符串抉择
  4. 【深度学习】训练集、验证集、测试集
  5. 单元格变色和图片透明
  6. Tiny框架2.0版火热推出
  7. python实现按回车键继续程序_python实现按任意键继续执行程序
  8. php session 反序列化,PHP SESSION反序列化本地样例分析
  9. php 命令行打印换行符_如何在命令行输出中打印换行符
  10. python捕获所有异常状态_如何在scrapy中捕获并处理各种异常
  11. qtableview删除选中行_如何批量删除PPT备注+如何修改模板信息
  12. LTE物理传输资源(2)-频带、信道带宽和频点号EARFCN
  13. 求不小于N且二进制串包含K个1的最小的数字
  14. 苹果叶片病害识别中的深度学习研究
  15. 数据结构一元多项式求导_Joahua的数据结构笔记(二)
  16. 功能强大的手绘Web图表组件-RoughViz
  17. matlab两条曲线方程求交点_matlab中已知两曲线方程,怎样求两曲线交点并标注出?...
  18. 网络服务器管理系统设置实训总结,网络系统管理与维护实训报告.doc
  19. 封装继承多态还是封装抽象继承多态
  20. word计算机板书,Word板书设计怎么写

热门文章

  1. mysql同步多主,MySQL多主一从同步配置
  2. lua mysql 存储类型_Lua学习----Lua基础数据类型
  3. python中编完类后到实例编写_Python 和 JavaScript 的区别是什么?
  4. python带界面的人脸识别_PyQt5+Caffe+Opencv搭建人脸识别登录界面
  5. hadoop2.9.2安装hadoop_pid_dir_Hadoop3.2 +Spark3.0全分布式安装
  6. 梳子刻字刻什么好_石阶上被刻了1700多个汉字,网友狂赞!
  7. 机器学习算法-10贝叶斯信念网络、聚类算法、基于密度的方法DBSCAN
  8. h5调微信支付 unkonw url_h5移动端调用支付宝、微信支付的实现
  9. 现在电脑的主流配置_2019~2020电脑配置清单主流配件(下)
  10. include virtual引入html文件,ASP文件引用include file和include virtual两种用法