linux find命令详解

来源:互联网 发布:黑暗圣经知乎 编辑:程序博客网 时间:2024/05/18 03:10

Linux

系统

find

命令详解

 

一.

 

grep

命令在当前目录下的所有普通文件中搜索

hostname

这个词

 

      

#find . 

name \* -type f 

print | xargs grep 

hostname

 

        

注意在这个例子中,

\

用来取消

find

命令中的

*

shell

中的特殊含义

 

        Find

命令配合试用

exec

xargs

可以使用户对所匹配到的文件执行几乎所有的命令

 

二.

 

Find

命令参数使用

name

选项

 

使用某文件名模式来匹配文件,一定要用引号将文件名模式引起来

 

不管当前路径是什么,

如果想要在自己的

根目录

$home

中查找文件名符合

*.txt

的文件试用

~

作为

pathname

参数,

波浪线

~

代表了你的

$home

目录

 

例:

$find ~ -name 

*.txt

 

print     # ~

代表了当前用户的根目录

 

例:

$find . 

name 

*.txt

 

print    # .

代表当前路径

 

例:

$find . 

name 

[A-Z]*

 

print   # 

查找以大写字母开头的文件

 

例:

$find /etc 

name 

host*

 

print # 

/etc

目录下查找

host

开头的文件

 

例:

$find / -name 

*.txt

 

print     # 

从根目录开始查找所有的

*.txt

文件

 

例:

$find . 

name 

[a-z][a-z][0-9][0-9].txt

 -print 

三.

 

Find

命令参数使用

perm

选项

 

        

$find . 

perm 755 -print  #

当前目录下查找文件权限为

755

的文件

 

            -perm mode #

文件许可整好符合

mode 

            -perm +mode #

文件许可部分符合

mode 

            -perm 

mode #

文件许可完全符合

mode 

例如

-007

相当于

777 

四.

 

Find

命令参数忽略某个目录

 

如果希望在

/apps

目录下查找文件,但不希望在

/apps/bin

目录中查找可以使用

 

$

 

find . -path "./asdf" -prune -o -name "*.txt" -print 

五.

 

Find

命令参数使用

user

nouser

选项

 

在某用户的根目录下查找属主为

seal

的文件

 

$find ~ -user seal -print 

$find /etc 

user seal 

print 

查找属主被删除的文件使用

-nouser

选项

 

$find /home 

nouser -print 

六.

 

Find

命令参数使用

group

nogroup

选项

 

查找属于

dba

用户组的文件

 

$find /home/ap/seal 

group dba -print 

查找没有有效用户组的文件

 

$find / 

nogroup -print 

七.

 

Find

命令参数按照更改时间或访问时间等查找文件

 

$find / -mtime -5 

print  #

查找更改时间在

5

日以内的文件

 

$find / -mtime +3 

print  #

查找更改时间在

3

天以前的文件

 

八.

 

Find

命令参数查找比某个文件新或旧的文件

 

   

查找比文件

sam

新但比

temp

旧的文件!是逻辑非符号

 

$find 

newer sam ! 

newer temp 

ls 

查找更改时间比

temp

文件新的文件

 

$find . 

newer temp -print

 

九.

 

Find

命令参数使用

type

选项

下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变状态的文件
-ctime n
查找系统中最后n*24小时被改变状态的文件
-empty
查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
-false
查找系统中总是错误的文件
-fstype type
查找系统中存在于指定文件系统的文件,例如:ext2 .
-gid n
查找系统中文件数字组 ID 为 n的文件
-group gname
查找系统中文件属于gnam文件组,并且指定组和ID的文件

范例:
find /etc -name '*srm*'
定时以root运行一下updatedb,在全盘找文件时用locate命令比较快。用find找/太慢了。
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件

Find命令的控制选项说明:
Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。
选项
用途描述
-daystart
.测试系统从今天开始24小时以内的文件,用法类似-amin
-depth
使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
-follow
遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询
-help
显示命令摘要
-maxdepth levels
在某个层次的目录中按照递减方法查找
-mount
不在文件系统目录中查找,用法类似-xdev.
-noleaf
禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找
-version
打印版本数字


使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。

-maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如下命令
find . -maxdepth 2 -name fred

假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。

使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and 来把两个查找选项链接起来组合成一个混合的查找方式。
find /tmp -size +10000000c -and -mtime +2

学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。
还有这样的例子,
find / -user fred -or -user george

我们可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。
在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的
find /tmp ! -user panda
命令就可以解决了。很简单。

查找并显示文件的方法
查找到某个文件是我们的目的,我们更想知道查找到的文件的详细信息和属性,如果我们采取现查找文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以把这两个命令结合起来使用。
find / -name "httpd.conf" -ls

系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法
选项
用途描述
-exec command;
查找并执行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
打印文件格式
-ok command;
给用户命令执行操作,根据用户的Y 确认输入执行
-printf format
打印文件格式
-ls
打印同种文件格式的文件. 


0 0