文件搜索者--find命令详解

1. 文件查找:

在linux系统中由于文件的众多,往往需要在众多的文件当中查找某一个文件,如果时间一长,很难记得文件存放至何处,不过,这一点,你不比担心,因为开发人员为我们提供了强大的文件搜索工具,下面将介绍两款常用的文件查找工具locate,和find,这两款查找工具只能是从文件系统中查找不能在内存当中查找,因为内存是没有文件系统的。

2. locate命令:

locate命令是基于数据库来查找文件的,命令查找速度快,一般查找跟新慢的,名字变化少的,如:配置文件,可以用locate查找,因为数据库需要更新,所以就会有一点延迟,locate命令一般是每天更新一次数据库,所以有可能最新创建的文件找不到,或者刚刚删除的文件任在数据库当中。可以使用updatedb更新数据库信息,数据库文件:/var/lib/mlocate/mlocate.db

locate 用法:

locate 选项 参数

选项:

-e 排除在寻找范围之外。

-q 安静模式,不显示任何错误信息

-n 最多显示#个输出

-r 支持正则表达式

-i 忽略大小写

-b 基名

示例:

[[email protected]_8 etc]# locate -r‘\<functions$‘ -n 3
/etc/rc.d/init.d/functions
/etc/sysconfig/network-scripts/network-functions
/lib/lsb/init-functions

3. find命令:

用来在指定目录下查找文件。功能十分强大,可以根据各种条件进行查找,如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法:

find 选项 查找路径 查找条件 处理动作

选项:

根据文件名和iNode查找:

-name 支持使用通配符* ? [] [^] 根据文件名查找

-iname 不区分大小写的根据文件名查找

-inum # 根据#指定的iNode号查找

-samefile 相同iNode号相同的文件,也就是硬链接

-link # 链接数为#的文件

-regex 使用正则表达式匹配文件

根据文件属组和属主查找:

-user 根据属组为指定用户UID查找文件

-grop 查找属组问指定组的文件

-gid根据gid号码查找文件

-nouser查找没有属主的文件

-nogrop查找没有属组的文件

根据文件类型:

-type

f 普通文件

d 目录文件

l 符号链接文件

s 套接字文件

b 块设备文件

c 字符设备文件

p 管道文件

组合条件:

-a 与

-o 或

-not !非

根据文件大小查找:可以查找指定范围大小(带单位k,M,G)的文件

-size [+|-]#unit

# unit (#-1,#] 区间前开后闭

-#unit [0.#-1]

+#unit (#,∞)

根据时间戳查找:可以以天或分钟为单位

[+|-]#参数意义:#:[#,#+1],+#:[#+1, ∞], -# [0,#)

-atime 访问时间

-mtime 修改时间

-ctime 改变时间

以分钟为单位的三种时间

-amin

-mmin

-cmin

根据权限查找:-perm [/-] mode

mode 精确权限匹配

/mode 每一位只要有一类匹配的就行

-mode 每一类必须同时拥有mode指定的权限

0 表示不关注,权限随意

查找完成的处理动作:

-ls 类似于ls –l 命令可以显示文件详细列表

-delete 删除查找到的文件

-fls 查找到的文件都以长格式形式保存在文件当中

-ok command {} \;对查找到的文件执行command之前都会交互式的询问用户

-exec command {} \;类似于上一个命令,不需要交互,直接默认执行

排除查找的目录:

-prune(修减)不包含的文件或目录

补充:

关于时间大小方面参数数字的意义和示例:如查找文件大小为12k,表示查找的文件是大于等于11k,小于12k,是指定的值减1得到的,+6k表示查找文件7k(大于6k)到正无穷

-6k表示0到5k(包含5k,小于6k)的文件

4. find查找文件实例:

1、查找/var目录下属主为root,且属组为mail的所有文件

[[email protected] ~]# find /var/ -user root-group mail -ls
201334650   0 drwxrwxr-x   2 root     mail   50 Aug 13 12:54/var/spool/mail
205749525   0 -rw-------   1 root     mail   0 Aug 13 12:54 /var/spool/mail/root

2、查找/var目录下不属于root、lp、gdm的所有文件

[[email protected] ~]# find /var/    -not \( -user root -o -user lp -o -user gdm\)

3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件

[[email protected] ~]# find /var/ -mtime -7 -not\(  -user root -o -user postfix  \)

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

[[email protected] ~]# find / -nouser -nogroup-atime -7

5、查找/etc目录下大于1M且类型为普通文件的所有文件

[[email protected] ~]# find /etc/ -size +1M-type -f
find: Arguments to -type should containonly one letter
[[email protected] ~]# find /etc/ -size +1M-type f
/etc/selinux/targeted/policy/policy.29
/etc/udev/hwdb.bin
/etc/brltty/zh-tw.ctb

6、查找/etc目录下所有用户都没有写权限的文件

[[email protected] ~]# find /etc/ -not -perm/222 –ls

7、查找/etc目录下至少有一类用户没有执行权限的文件

[[email protected] ~]# find /etc/ -perm -111 -ls

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

[[email protected]~]# find /etc/init.d/ -perm -113
/etc/init.d/test

附:德·摩根定律

非(P 且Q) = (非P) 或(非Q)

非(P 或Q) = (非P) 且(非Q)

时间: 2024-12-11 15:14:40

文件搜索者--find命令详解的相关文章

BAT批处理之文件与文件夹(附xcopy命令详解)

在批处理脚本中,操作文件与文件夹的方法,包括文件的复制.删除.移动等操作,并附有xcopy命令的详细用法.原文地址:http://www.jbxue.com/article/14535.html 批处理中的文件.文件夹操作,xcopy命令的用法. 一,建bat文件自动执行复制,删除命令.例1:复制cd.dll文件至windows\system32的bat文件内容:copy cd.dll %windir%\system32例2:卸载windows\system32目录中的cd.dll,即把上面复制

Protobuf 文件生成工具 Prototool 命令详解

Protobuf 文件生成工具 Prototool 命令详解 简介 Prototool 是 Protobuf 文件的生成工具, 目前支持go, php, java, c#, object c 五种语言包的生成. 详情参考Github: https://github.com/uber/prototool docker 方式使用 prototool 工具 使用方式 // prototool 的使用 docker run --rm -v $(pwd):/work "uber/prototool&quo

[转] - JAR文件包及jar命令详解 ( MANIFEST.MF的用法 )

常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像. chm 文档一样双击运行了:而另一种是使用 JET 来进行 编译.但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序 都编译成执行文件,性能也要打些折扣.所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性. 下面就来看看什么是 JAR 文件包吧: 1. JAR 文件包 JAR 文件

文件查找及find命令详解

find 1.文件查找: 在文件系统上查找符合条件的文件的过程: 2.文件查找:locate, find locate: 非实时查找工具:依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务):手动更新此数据库(updatedb):查找速度快:模糊查找: find:实时查找:查找速度略慢:精确查找: 3.find命令使用方法: find [OPTION]... [查找路径] [查找条件] [处理动作] 查找路径:默认为当前路径: 查找条件:指定的查找标准,可以根据文件名.大小.

Linux中文本搜索工具“grep”命令详解

人生中应该有两次冲动,一次是轰轰烈烈的爱情,一次是说走就走的旅行.我属于第三种,轰轰烈烈的辞职然后马不停蹄的参加了马哥的linux面授班,两周时间内对linux有了些初步的了解,与此同时,两周内八天课程中的各种定义.概念.原理.命令由于量大.琐碎,也着实给我们这些小白一个下马威,即使每天11点撤退也觉得时间不够用.鉴于对自己的负责和马哥的作业要求,特对文本搜索工具grep写些使用指南,其中可能会有描述不确切或有偏颇之处,望及时指正. 开始--. 首先,要说一下grep是什么,用在什么地方. gr

在Linux里,防止文件被删除(chattr命令详解)

1. 概述 linux中键入"man chattr",其描述为"chattr changes the file attributes on a Linux file system."从这我们很容易得出:在Linux文件系统里,chattr是可以改变文件的属性. 2. 具体的语法格式 chattr [ -RVf ] [ -v version ] [ mode ] files...[1] 注:中括号是可选选项,而 files 表明其为参数,必须要有.如果您加上版本号(-

搜索系统中所有以.repo结尾的文件并删除(find命令详解及xargs命令详解)

find / -name *.repo | xargs rm –rf //搜索以.repo结尾的文件并删除 find命令详解 精细查找文件或目录d find [ 查找范围 ] [ 查找条件表达式 ] 常用查找条件: 按名称查找:"-name",支持通配符"*"."?" 按文件大小查找:"-size",可使用"+"."-"作为容量条件 按文件属主查找:"-user" 按

BAT批处理之文件与文件夹操作代码(附xcopy命令详解)

批处理中的文件.文件夹操作,xcopy命令的用法. 一,建bat文件自动执行复制,删除命令. 例1:复制cd.dll文件至windows\system32的bat文件内容: copy cd.dll %windir%\system32 例2:卸载windows\system32目录中的cd.dll,即把上面复制的文件删除: del %windir%\system32\cd.dll 例3:删除download文件夹中的文件,例子如下: del C:\DOWNLOAD\*.* 注意,以处的del命令只

文件管理命令详解

Linux03 Linux03_01?文件管理命令详解 作业1: 1.创建目录/backup # mkdir -v /backup 2.复制目录/etc至/backup目录中,并重命名为"etc-当前日期",如etc-2013-02-26:要求保留文件原来的属性,保持链接文件: cp -r -p -d # cp -a /etc /backup/etc-2013-02-28 命令替换 3.复制文件/etc/inittab为/tmp/inittab.new,并删除inittab.new文件