linux find 命令详解

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

1、根据文件名或正则表达式匹配搜索

选项-name的参数指定文件名所必须匹配的字符串。 例:匹配所有以.txt结尾的文件名 $find /root/ -name "*.txt" -print 选项-iname,该选项的作用和-name类似,不过匹配的时候忽略名字的大小写。 匹配多个条件,可以使用OR条件操作 $find . /root/ \( -name "*.txt" -o -name "*.pdf" \) -print 选项-path的参数可以使用通配符来匹配文件路径或文件。 $find . -path "*include/apu*"        ./httpd-2.2.22/srclib/apr-util/include/apu_version.h ./httpd-2.2.22/srclib/apr-util/include/apu.hw ./httpd-2.2.22/srclib/apr-util/include/apu_errno.h ./httpd-2.2.22/srclib/apr-util/include/apu.hnw 选项-regex的参数和-path类似,不过-regex是基于正则表达式来匹配文件路径。 下面命令匹配.py或.sh文件 $find . -regex ".*\(\.py\|\.ssh\)$" ./.ssh ./httpd-2.2.22/srclib/apr/build/gen-build.py
2、否定参数
find也可以使用"!"否定参数的含义。
例如:匹配所有不是以.txt结尾的文件名
$find . ! -name "*.txt"
3、基于目录的深度搜索
使用-maxdepth和-mindepth参数来限制find命令遍历目录的深度。
例:列出当前目录下的所有普通文件。
$find . -maxdepth 1 -type f
-maxdepth和-mindepth应当作为find的第三个参数出现,如果作为第四个或之后的参数,则会影响find的效率。
4、根据文件的类型搜索
使用-type对文件搜索进行过滤,以下是type参数对应文件的类型
普通文件  f、符号文件 l、目录 d、字符设备 c、块设备 b、套接字 s、Fifo p。
例:列出所有目录
$find . -type d -print
5、根据文件时间进行搜索
系统每个文件有三种时间戳,如下所示:
访问时间(-atime):用户最近一次访问时间
修改时间(-mtime):文件内容最后一次修改时间。
变化时间(-ctime):文件元数据(例如权限或所有权)最后一次改变时间
打印出最近7天有过访问的所有文件
$find . type f -atime -7 print

打印出访问时间超过7分钟的所有文件
$find . type f -admin -7 print
6、基于文件大小的搜索
$find . -type f -size +20k
#大于20KB的文件
$find . -type f -size -20k
#小于20KB的文件
$find . -type f -size 20k
#等于20KB的文件
7、删除匹配的文件
-delete可以删除find查找到的.swp文件
$find . -type f -name "*.swp" -delete
删除当前目录下的所有的.swp文件
8、基于文件权限和所有权的匹配
例:打印出权限为644的文件
$find . -type f -perm 644 -print

查找没有执行权限的PHP文件
$find . -type f -name "*.php" ! -perm 644 -print

打印出用户slynux所拥有的文件:
$find . -type f -user slynux -print
9、结合find执行命令或动作
借助选项-exec与其他命令结合。
示例:
#find . -type f -user mysql -exec chown root {} \;
在当前目录下修改属于用户mysql的文件为属于root用户。

#find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
将10天前的.txt文件复制到OLD目录下
10、find跳过特定的目录
打印出不包过在.svn的目录的所有文件的名称
#find . \( -name ".svn" -prune \) -o \( -type f -print\)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值