Linux文件查找

grep,egrep,fgre:文本查找

locate:
非实时,模糊匹配\(非精确查找\)查找是根据全系统文件数据库进行的

#updatedb 手动生成文件数据库

速度快

操作系统完成后,每天晚上(取决于任务计划)都会将本系统上的所有文件的相关信息保存在数据库中


find
实时

精确

支持众多查找标准

遍历指定目录中的所有文件完成查找,速度慢

find 查路径 查找标准 查找到以后处理的动作

查找路径:默认为当前路径

查找目标:默认为当前路径下所有文件

处理动作:默认为显示

匹配标准(查找标准)

`-name 'FILENAME':对文件名进行精确查找

`

文件名匹配

` *,?,[]等

`

-iname 'FILENAME':文件名匹配时不区分大小写

-regex PARTTERN:基于正则表达式进行文件匹配

-user USERNAME:基于文件属主进行文件查找

-group GROUPNAME:基于文件属组进行查找

-uid UID:根据UID进行查找

-gid GID:根据GID 进行查找

如果删除了某用户,则属主是该用户的文件的属主变为该用户的UID

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

    -type:文件类型
        f:普通文件
        d:目录
        c:字符
        b:块
        l:;链接
        p:管道
        s:套接字
    -size:指定查找的文件大小
    默认单位字节
    [+ | -]#k:+ 代表大于 - 小于
    [+ | -]#M
    [+ | -]#G
    小数 会近似
组合条件
    `-a:与

`

-o:或

-not:非

默认为与操作

例子

[root@localhost test]# find -not \( -user test1 -o -user test2 \)

`-mtime:查找在指定时间曾被更改过的文件或目录

`

  `-atime:查找在指定时间曾被存取过的文件或目录

`

    `-ctime:查找在指定时间之时被更改的文件或目录

`

单位以天数为准

`    [ + | - ]#

`

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;

-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;

-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟

`-perm<权限数值>:查找符合指定的权限数值的文件或目录;

`

[ - | / ]mode

-mode:每一位都要匹配

/mode:中只要有一个匹配即可

例子:

`find -perm 644

`

动作

-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;

-ls:假设find指令的回传值为Ture,就将文件或目录的详细信息列出到标准输出,类似于ls -l;

-ok COMMAND {} \:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;

-exec COMMAND {} \:假设find指令的回传值为True,就执行该指令;


xargs

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。

它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。

xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,

不过通过xargs的处理,换行和空白将被空格取代

    -d选项可以自定义一个定界符:
    -n选项多行输出:

results for ""

    No results matching ""