您的位置:首页 > 运维架构 > Linux

Linux中关于find指令的用法以及whereis指令

2017-03-26 14:15 253 查看
初识Linux,感觉“哇塞好神奇。。。。。。”真的一点儿不夸张。

当你扔掉鼠标,拿一把称心如意的键盘来控制计算机的时候,那个feel,倍儿爽,想想都觉得帅到爆。当然,前提是你得能够熟练的运用Linux指令。

额,言归正传,我就想说说find指令的使用来着。

以下所有命令用于CentOS6.5系统下。用户名为uu。

Linux下find命令在目录结构中搜索⽂件,并执⾏指定的操作。

Linux下find命令提供了很多查找条件,功能很强⼤,所以它的选项也很多。(即使系统中含有⺴络⽂件系统( NFS),find命令在该⽂件系统中同样有效,只要你具有相应的权限。)

在运⾏⼀个⾮常消耗资源的find命令时,大都倾向于把它放在后台

执⾏,因为遍历⼀个⼤的⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。

指令格式

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


命令参数

pathname : find命令所查找的目录路径。例如⽤.来表⽰当前目

录,⽤/来表⽰系统根目录。

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

-exec: find命令对匹配的⽂件执⾏该参数所给出的shell命

令。相应命令的形式为’command’ { } \;,注意{ }和\;

之间的空格。

-ok: 和-exec的作⽤相同,只不过以⼀种更为安全的模式来执⾏

该参数所给出的shell命令,在执⾏每⼀个命令之前,都会给出提

⽰,让⽤户来确定是否执⾏。

命令选项

学习命令选项之前,先来看张图,了解一下与文件相关的一些属性。



1. -name 按照文件名查找文件。 比如:

find ~ -name file //在当前用户目录下查找文件名为file的文件
find -name file   //在当前目录下查找文件名为file的文件


来看看结果吧



用户目录下有三个名为file的文件,分别打印了各自的文件路径。

当前目录的file文件,打印了
./file
,其中.表示当前目录,/为目录分隔符。

find ~ -name file -exec ls -l {} \;  //显示用户目录下file的详细信息。相当于以文件信息替换 `{} \;`




2. -perm 按照文件权限来查找文件。

find ~ -perm 444 -exec ls -l {} \; //查找权限为444的文件


444表示文件权限为对于所有用户都为只读,以字母r来表示。



3. -user 按照文件属主来查找文件。

find -user uu //查找用户名为uu的文件


我的系统下只有一个用户,即uu,所以所有文件名都会打印出来,就不给大家看结果啦。



4. -group 按照文件所属的组来查找文件。

指令使用形式如上。结果也一模一样。

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

find -size +100c -size -500c -exec ls -l {} \; //查找文件大小在100到500字节之间的文件


看看结果



若是已知要查找的文件大小,比如要查找451字节的文件,那么直接
find -size 451c
就可以啦。

6. -mtime -n +n 按照文件的更改时间来查找文件。

-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。 find命令还有-atime和-ctime 选项,但它们都和-m time选项相同。我这里就不多说啦。

find -mtime -3 -mtime +1 //查找文件更改时间距现在3天以内1天以前。


尴尬了,我的文件没有符合条件的,所以就只看三天以内的哈!



7. -type 查找某⼀类型的文件。

b - 块设备⽂件。

d - 目录。

c - 字符设备⽂件。

p - 管道⽂件。

l - 符号链接⽂件。

f - 普通⽂件。


find -type d // 查找目录文件


当前目录下,只有当前目录和dir1位目录文件。



总结

find指令常用的命令选项如上。当然,只要记住,使用不是难事。但有些情况,往往需要把多个命令选项揉起来用,其实也不难,只要把命令选项记住了,想用哪个依次跟在后面就ok啦。

来看例子

find ~/bit_code -user uu -group uu -perm 664 -size +100c -size -500c -mtime +3 -exec ls -l {} \; //查找当前用户bit_code目录下用户名和所属组都是uu,权限为664即rw-rw-r--,文件大小在100到500字节之间且3天以前修改的文件的详细信息




whereis指令

whereis命令只能用于程序名的搜索,⽽且只搜索⼆进制文件(参数-b)、 man说明文件(参数-m)和源代码文件(参数-s)。

命令格式如下:

whereis [-bmsu] [BMS 目录名 -f ] ⽂件名


find&whereis

和find相⽐, whereis查找的速度⾮常快,这是因为linux系统会将系统内的所有文件都记录在⼀个数据库文件中,当使用whereis时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率⾃然会很⾼。

但是该数据库文件并不是实时更新,默认情况下时⼀星期更新⼀次,因此,我们在用whereis查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却⽆法查找到,原因就是因为数据库文件没有被更新。

以上内容,如有错误,欢迎指点!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  centos linux 指令 权限