Linux命令:find
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令:find相关的知识,希望对你有一定的参考价值。
find命令简介:
实时、 精确、 支持众多查找标准、遍历指定目录中的所有文件完成查找,速度慢;
1.命令格式:
find [-H] [-L] [-P] [path...] [expression]
2.命令功能:
find 查找路径 查找标准 查找到以后的处理运作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示
3.命令参数:
-name‘FILENAME‘:对文件名作精确匹配
文件名通配:
* :任意长度的任意字符
? :
[]:
-iname ‘FILENAME‘: 文件名匹配时不区分大小写
-regex PATTERN: 基于正则表达式进行文件名匹配
-user USERNAME: 根据属主查找 find ./ -user user1
-group GROUPNAME: 根据属组查找 find ./ -group root
-uid UID: 根据UID查找 find ./ -uid 4023
-gid GID: 根据GID查找
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
-type
f: 普通文件
d 目录
c 字符设备文件
b 块
l 符号链接文件
p 管道
s 套接字
-size[+|-] #k #M #G
4.组合条件: (有多个条件未申明时默认为与)
-a and 与
-o or 或
-not 非
eg: find /tmp -nouser -a -type d -ls 无属主且类型是目录的文件
find /tmp -nouser -o -type d -ls 无属主或类型是目录的文件
find /tmp -not -type d 类型不是目录的文件
find ./ -not \( -user user1 -o -user user2 \)
-mtime 修改时间 make
-ctime 改变时间 change
-atime 访问时间 access find ./ -mtime +5
[+|-]# 至少2天 +2 3天以内 -3
-mmin
-cmin
-amin find ./ -amin +5
[+|-]# 至少2分钟 +2 3分钟以内 -3
-permMODE:精确匹配
/MODE:任意一位匹配即满足条件
-MODE:文件权限能完全包含此MODE时才符合条件
-644
644: rw-r--r--
755: rwxr-xr-x
750: rwxr-x--- 绿色部分不一样(不是r)
eg1. find ./ -perm -001 查找其它用户有执行权限的
eg2. find ./ -perm -022 查找组且其它用户有写权限的
eg3. find ./ -perm /022 查找组用户有写权限 或其它用户有写权限的
eg4. find ./ -perm -007 查找组用户有读、写、执行权限的
5.运作:
-print: 显示
-ls: 类似ls -l的形式显示每一个文件的详细
-ok COMMAND {} \; 每一次操作都需要用户确认,已找到的文件符:{}
-exec COMMAND {} \; 操作直接执行,
eg1.find ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \;
1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2、查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
find /etc -mtime -7 -not \( -user root -o-user student \) 转义符\
find /etc -mtime -7 -not -user root -a -not-user student
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / \( -nouser -o -nogroup \) -a -atime-1 -exec chown root:root {} \;
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M | echo {} >>/tmp/find.log1
find ./ -size +15M | xargs echo >> /tmp/find.log1
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
---end---
以上是关于Linux命令:find的主要内容,如果未能解决你的问题,请参考以下文章
Linux汇总一——Linux程序管理,Linux终端,Linux命令格式命令类型及Linux命令帮助