linux-find搜索指令详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux-find搜索指令详解相关的知识,希望对你有一定的参考价值。

Find 命令参数项详解

Linux  find 命令在目录结构中搜索文件,并执行指定的操作,它具有许多强大的功能,在运行一个非常耗资源的find命令时通常将它放在后台运行,因为遍历一个很大的文件会很耗费时间

一.命令格式:

find pathname  -options[-print -exec  -ok]

二.命令功能

用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)

三.命令参数

Pathnamefind命令所查找的目录路径,例如.表示当前路径 /表示系统根目录

-print:find 命令将匹配的文件输出到标准输出上

-exec:find 命令对匹配的文件执行该参数所给出的shell命令,相应的命令为’commond

{ },\

-ok: -exec作用相同,只不过以一种更为安全的模式来执行参数所给出的shell指令,在执行每一条指令之前,都会提示来让用户确定是否执行.

-type:查找某一类型的文件

b-块设备文件

d-目录

C-字符设备文件

P -管道文件

L-符号链接文件

F-普通文件

-size n :[c]查找文件长度为n块的文件,带有c时表示文件长度按字节计算

-depth:在查找文件时首先查找当前目录中的文件,然后在子目录中查找

-fstype:查找位于某一类型系统中的文件,这些文件系统类型可以在配置文件/etc/fstabe/该文件

 

1.使用name选项

文件名选项是find命令中最常用的选项,可以单独使用该选项也可以和其他选项一起使用,可以使用某种文件名来匹配文件,但是一定要用引号将文件名模式引起来。不管当前路径是什么,如果要在自己的根目录$HOME 中查找文件名符合的文件,则需要使用~作为“pathname”参数,波浪号代表了你的$HOME目录。

find ~ -name "*.log" -print

(1)想要在当前目录及子目录中查找所有的‘*log’文件,可以用:

find  -name "*.log" -print

(2)想要在当前目录及其子目录中查找以一个大小写字母开头的文件,可以用:

find .-name[A-Z]*-print

(3)想要在/etc目录中查找文件名以host开头的文件,可以用:

find/etc-namehost*” -print

(4)想要查找$HOME目录中的文件,可以用:

find/-name *” -print

(5)想要系统高负荷运行就要从根目录下开始寻找所有文件

find/-name*-print

如果想在当前目录中查找以一个小写字母开头,最后是2-3加上.log的文件则可以用一下语句:

find .-name "[a-z]*[2-3].log" -print

 技术分享

2.用perm选项

    按照文件权限模式用-perm选项,按文件权限模式来查找文件最好选用八进制权限表示法。

    如果在当前目录下查找文件权限为644的文件,即文件属主可以读写执行,其他用户可以读和执行的文件

    还有一种表示方法:在八进制数字前边加一个-,表示都匹配,如-007就想当与777-005相当于555

 技术分享

3.忽略某个目录

    如果在查找文件时希望忽略某个目录,因为你不知道那个目录中有没有你要查找的文件,则可以用-prune选项来指定需要忽略的目录,在使用-prune选项时要当心,因为如果同时使用了-depth选项那么-prune选项就会被find命令忽略,如果希望在test目录下查找文件,但不希望在test/test3目录中查找用

find test-pathtest/test3-prune -o -print

技术分享

4.使用find查找文件时怎么避开某个文件目录:

例子1

在 test目录下不在test4子目录之内的所有文件

命令:

find test -path "test/test4" -prune -o -print

注释:

Find [-path][expression]

在路径列表后边的是表达式

-path test”为真,则求值-prune-prune返回真;否则不求-prune,与逻辑表达式为假

例子2:查找某一个确定文件,-name等选项加载-o之后

find test  -prune -o -name -print

5使用usernouser选项

按照文件属主查找文件

例子1:在$HOME目录中查找文件属主为zyp 的文件

find ~ -user zyp -print

例子2/etc目录下查找文件属主为zyp的文件

find /etc -user zyp -print

例子查找主账户已经被删除的文件,可以使用-nouser选项,在/home下查找所有这类文件

命令:find/home -nouser -print


6.按照更改时间或者访问时间等查找文件

   如果希望按照更改时间来查找文件,可以使用mtime ,ctime,atime选项,如果系统突然没有可用空间,很可能某一个文件的长度在此期间增长迅速,这是就可以用mtime选项来查找文件,用-减号来限定更改时间在居今n日以内的文件,用+加号来限定更改时间在距今n日以前的文件


# -atime:按访问时间查找文件,-nN天以内,+nN天以前

# -mtime -n +n 按文件更改时间查找文件,-nN天以内,+nN天以前

#-ctime 按创建时间来查找文件 -nN天以内,+nN天以前

 技术分享

技术分享

技术分享


-amin -n:查找系统最后N分钟访问的文件

-atime -n:查找系统最后N*24小时访问的文件

-cmin -n:查找系统最后N分钟被改变文件状态的文件

-ctime -n:查找系统最后N*24小时被改变文件状态的文件

-mmin -n:查找文件系统中最后N分钟被改变文件数据的文件

-mtime -n:查找文件系统中最后N*24小时被改变文件数据的文件

总结:min是分钟,time是小时,a是访问,c是改变状态m是改变数据

 

7. type选项

例子/etc目录下查找所有的目录

命令:find/etc -type d -print

例子在当前目录下查找除目录以外的所有类型的文件

命令:find !type d -print

例子/etc目录下查找所有的符号链接文件

命令:find/etc-type| -print

8. 使用size选项:

    可按照文件的长度查找文件,这里所指的文件可以是块(block)来计量,也可以用字节来计量,以字节计量文件长度的表达方式为N c;以块计量文件长度只用数字表示即可

   在按照文件长度查找文件时,一般使用以字节表示文件长度,在查看文件系统的大小时这时使用块来计量更容易转化

例子1:在当前目录下查找文件长度大于1M字节的文件

   find -size +1000000c -print

技术分享

例子2:在当前目录下查找长度超过10块的文件

    find -size +10 -print


以上是关于linux-find搜索指令详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux下的find指令详解

linux-find递归搜索文件名

Linux-find命令

LINUX:alias命令详解

dig命令详解

Linux find 命令详解