find 命令
find 是一个很强大的文件查找工具,可以按照文件的文件名、文件的属主、属组、文件的大小、文件的类型、文件权限、文件的时间戳来查找文件,还可以查找无效的属组、属主的文件,此外find还支持组合条件查找文件;默认情况下递归搜索目录下的文件,实时查找,查找速度相对locate较慢
find 的命令格式
# find [PATHNAME...] [criterion...] [actions...]
PS:在不指定PATHNAME时默认在当前目录搜索
在不指定criteria时默认匹配所有criteria
默认的action是-print
pathname:find 命令所查找的目录路径。
action:
-print: find 将匹配的文件输出到标准输出
-exec :find 将匹配的文件执行exec给出的shell命令。命令格式:COMMAND {} \;
-ok 与-exec的作用相同,只是在执行-ok 给出的shell命令更安全,在执行每条COMMAND之前,让用户缺人手否执行该命令。
-ls 以长格式显示文件的属性信息
选项:
-name: 按照文件名查找文件,严格区分大小写,支持globbing方式的文件通配
-iname:按照文件名查找文件,忽略大小写
-user UID
按照文件属主来查找文件
-group GID
按照文件所属的组来查找文件
-nouser
查找无有效属主的文件
-nogroup
查找无有效所属组的文件
-size SIZE [K|M|G]
10M
查找大小为10M的文件
+10M
查找大小大于10M的文件
-10M
查找大小大于10M的文件,默认小于一个单位内的文件都包含
-type
f :file 普通文件
d:directory 目录
b:block 块设备文件
c:character 字符设备文件
p:pipe 管道文件
l:link 链接文件
s :socket 套接字文件
-atime
n
-mtime
n
-ctime
n
-amin
n
-mmin
n
-cmin
n
PS:以上是按照文件的更改时间查找文件,其中time为天数,min为分钟;-n表示n分钟/天以内改变的,+n表示文件更改时间距现在n天以前
-perm 按照文件的权限查找文件
755
3组的权限都必须是755
+755, /755 其中任何一类用户某一个权限位符合条件
-755
所有类别用户的用户所有权限位符合条件, 0表示对这类用户不做检查
组合条件:
-o 或(最低)
-a 与(次之)
-not 非(优先级最高)
find 例子:
#find ./ 查找当前目录下的所有文件
#find /etc -type l -ls 查找/etc下链接文件并以长格式显示文件的属性信息
#find /etc -name "passwd*" 查找/etc下一passwd开头的文件
#find /usr -user root 查找/usr下属主为root的文件
#find /var -group mail 查找/var下属组为mail的文件
#find / -nouser 查找系统中无效属主的文件
#find / -nogroup 查找系统中无效属组的文件
#find /tmp -not -user gentoo "*ur*" 查找/tmp 不属于gentoo用户包含ur的文件
# find /var -user -group mail
查找/var目录下属主为root并且属组为mail的所有文件
# find /usr -not -user root -a -not -user bin -a -not -user student
#find /usr -not \( -user root -o -user bin -o -user student \)
查找/usr/目录下不属于root,bin,或student的文件
# find /etc -mtime 7 -a -not -user root -a -not -user apache
# find /etc -mtime 7 -a -not \( -user root -o -user apache\)
查找/etc目录下最近一周内内容修改过且不属于root及apache用户的文件
# find / \( -nouser -o -nogroup \) && -ctime -1 -exec chown root:root {} \;
查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root
# find /etc -size +1M -exec basename {} >> /tmp/etc.largefiles \;
查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中
# find /etc/ -not -perm /222 -ls
查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息
转载于:https://blog.51cto.com/urchin/777670