Linux系统文件查找命令find的基本使用及其高级用法


在Linux系统维护工作时,经常会查找文本文件。

例如:假如:web服务器经常出现延迟,或者经常会出现一些参数的错误信息。

1、考虑带宽问题

2、考虑我的配置文件问题:

例如:是不是被其它人更改过所造成的参数、延迟等信息,这样我们就会用到find命令来查找文件的相关信息,并加以修改。

如果我们做系统运维这方面的工作时,会经常用到find命令来帮助我们完成文件的查找工作,所以我们要认真学习find命令的使用及其相关的高级用法:

文件查找:locate、find

locate:
非实时,模糊匹配,查找是根据全系统文件数据库进行的;
# updatedb, 手动生成文件数据库


find:
实时
精确
支持众多查找标准
遍历指定目录中的所有文件完成查找,速度慢;


查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示

 


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


find 查找路径 查找标准 查找到以后的处理运作
find pathname -options [ -exec -ok ...]

2、find命令的参数;

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

3、find命令选项

-name :按照文件名查找文件
For example:在/etc目录下查找文件名passwd的文件
# find /etc -name 'passwd'
-iname:按照文件名查找文件,且不区分大小写
For example:在/etc目录下查找文件名passwd的文件
# find /etc -iname 'passwd'

-user:按照文件属主来查找文件
For example:在/tmp目录下查找属主为hdoop的文件或目录
# find /etc -user hdoop

-group :按照文件所属的组来查找文件
For example:在/tmp目录下查找属组为hbase的文件或目录
# find /tmp -group hbase

-uid:UID:当某个用户被删除,用户所属的文件UID没有被删除,在这个情况下就可以使用此选项
For example:用户hdoop的UID为600,如果将hdoop用户删除,那如何在/tmp查找文件或目录的属主为hdoop以前的文件呢
# find /tmp -uid 600

-gid:GID:当某个组被删除,用户所属的文件GID没有被删除,在这个情况下就可以使用此选项
For example:组hbase的GIDD为666,如果将hbase组删除,那如何在/tmp查找文件或目录的属组为hbase以前的文件呢
# find /tmp -gid 666


-nouser:查找没有有效所属主的文件,即该文件所属的主在/etc/passwd中不存在
For example:查找/tmp目录没有属主的文件
# find /tmp -nouser

-nogrouop:查找没有有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
# find /tmp -nogroup

-type:以文件类型查找文件
在Linux文件系统中常用到的文件类型有:
b:块设备文件
d:目录
c:字符设备文件
p:管道文件
l:符号链接文件
f:普通文件
s:套接字设备文件
p:管道设备文件
For example:查找/tmp目录下所有普通文件
# find /tmp -type f

-size: [+|-]文件大小查找文件
默认单位是字节,当我们去找10M的文件时,所有9点几兆的文件都满足条件。
#k:(#代表数字)
#M:(#代表数字)
#G:(#代表数字)
For example:查找/tmp目录下文件大小为10MB的文件
# find /tmp -size 10M
组合条件:
-a:与条件
-o:或条件
-not:非条件
For example:查找/tmp目录下没有属主并且类型为目录的文件
# find /tmp -nouser -a -type d -ls
假如把-a换成-o选项:则说明没有属主或是目录文件,两个选项满足一个即可。
# find /tmp -not -type d
说明在/tmp目录查找非目录类型的文件
查找/tmp目录下,非目录类型,并且还不是套接字类型的文件
# find /tmp -not -type d -a -not -type s
# find /tmp -not \( -type -d -o -type -s \)
两者都可以实现目的:

  • 1
  • 2
  • 下一页

相关内容