linux-find搜索指令详解

Find 命令参数项详解

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

一.命令格式:

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

二.命令功能

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

三.命令参数

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

-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-name”host*” -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-path”test/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使用user和nouser选项

按照文件属主查找文件

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

find ~ -user zyp -print

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

find /etc -user zyp -print

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

命令:find/home -nouser -print

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

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

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

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

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

-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选项

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

命令:find/etc -type d -print

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

命令:find !type d -print

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

命令:find/etc-type| -print

8. 使用size选项:

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

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

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

   find -size +1000000c -print

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

find -size +10 -print

时间: 2024-10-03 04:51:42

linux-find搜索指令详解的相关文章

<linux下sysctl指令详解>

Sysctl指令是对系统核心参数的设置: 用法: -a 参数列出系统中所有核心设置 当然了这些核心的设置都是文件,存放于/proc/sys/net目录下. 举个有代表性的例子: net.ipv4.icmp_echo_ignore_all = 0      把所有的点改为 / 就可以了.   [[email protected] net]# net.ipv4.icmp_echo_ignore_all = 0 [[email protected] net]# cd ipv4/ [[email pro

linux的find指令详解。

引用:http://os.51cto.com/art/200908/141411.htm http://www.oschina.net/translate/15-practical-linux-find-command-examples http://www.oschina.net/translate/15-practical-unix-linux-find-command-examples-part-2 find指令是用来搜索文件的指令.英文较好的同学可以直接看man find. 建议在本文找

Linux中tail指令详解

linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容. 一,tail命令语法 tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]参数解释:-f 该参数用于监视File文件增长.-c Number 从 Number 字节位置读取指定文

linux/centos at指令详解

at 定时任务,指定一个时间执行一个任务,只能执行一次. 语法:# at [参数] [时间] at> 执行的指令 退出at命令 ctrl+d 命令前提: 需要开启atd进程(在redhat中atd是默认随系统启动而启动) 测试中发现在centos6.5 mini版中没有自带at服务,因此需要自己通过下载 # yum -y install at # ps -ef | grep atd ##查看是否开启atd # /etc/init.d/atd start ##开启atd # chkconfig -

Linux指令详解useradd groupadd passwd chpasswd chage 密码修改

创建用户.设置密码.修改用户.删除用户: useradd testuser 创建用户testuser passwd testuser 给创建的用户testuser设置密码 说明:新创建的用户会在/home下创建一个用户目录testuser usermod --help 修改用户这个命令的相关参数 userdel testuser 删除用户testuser rm -rf testuser 删除用户testuser所在目录 上面的几个命令只有root账号才可以使用,如果你不知道自己的系统上面的命令在

linux下IPTABLES配置详解 (防火墙命令)

linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT-A RH-Firewall-1-INPUT -s 121.10.120.24 -p tcp -m tcp --dport 18612 -j ACCEPT 如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的

Linux的find命令详解和三个时间

这次解释一下三个Linux文件显示的三个时间,然后展示一下find命令的各个功能 在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime modification time(mtime): 当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别 status time(ctime) 当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,给我的感觉更

pragma comment的使用 pragma预处理指令详解

pragma comment的使用 pragma预处理指令详解 #pragma comment( comment-type [,"commentstring"] ) 该宏放置一个注释到对象文件或者可执行文件.comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一.commentstring是一个提供为comment-type提供附加信息的字符串,Remarks:1.compiler:放置编译器的版本或者名字到一个对象

linux主要shell命令详解

Linux主要shell命令详解 shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性. 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从sh