妈妈再也不用担心我找不到文件了---find

简介:

1.find vs locate

在实际中,我们经常需要查找到一些特定文件,然后进行处理,LINUX提供了locate , find这两个命令用于文件查找。

a.locate,非实时查找,非精确查找。linux会定期生成更新文件数据库,而locate将根据文件数据库进行查找。我们可以在使用locate命令前,更新文件数据库,使用updatedb即可。但是updatedb将会花费可能半天时间,SO LONG!


b.find , 实时查找,精确查找。根据指定路径,查找标准,进行文件遍历(包括隐藏文件和子目录)。


c. 显然,locate除了快些,相比find没什么优点。因此,实际中,我们查找文件首选find~


2.How to use find?

find 路径  标准  动作

说明:

关于路径:

我们可以不给,那么就是当前路径。


关于标准:

要知道find查找文件,支持众多标准,比如文件名精确匹配查找,权限,大小,正则等等。


关于动作:

定义查找到文件后可以发生哪些动作。默认的行为就是显示到屏幕上。



3.Some examples about find

实例一:-name 与 globbing

1
2
3
4
5
6
[root@localhost ~] # find . -name "*.sh"
. /manageuser .sh
. /13 .sh
. /17 .sh
. /25 .sh
. /mytask .sh

注意,-name表示根据文件名称进行精确匹配查找,支持文件名通配,即globbing。

【回顾下globbig,有*,?,[]等】

如果,我们不想区分大小写,可以-iname。


实例二:-user 与 -group , -uid 与 -gid

1
2
[root@localhost ~] # find /etc -uid 501
[root@localhost ~] # find /etc -user root

注意,-user,-group分别表示根据文件的属主,属组名称进行查找;-uid,-gid表示根据文件的uid,gid进行查找。那么它们有什么区别呢?


假设,file1的owner是zhangfengzhe,uid是550,如果userdel -r zhangfengzhe,那么文件file1怎么办?它将属于谁呢?

484299    4 ---xrwx--x   1 550      root            0 May 16 15:08 ./file1

可以看到,文件的属主将是uid,就是表示文件已经没有属主了。


可以利用-nouser,-nogroup查找没有属主,属组的文件。


事实上,我们应该定期利用-nouser查找没有属主的文件,然后交给root用户,以防止其他用户趁虚而入!


实例三:-type 'TYPE'

1
2
3
4
5
[root@localhost ~] # find -type d
.
./.gconf
./.gconf /desktop
./.gconf /desktop/gnome

注意,-type表示根据文件类型进行查找。LINUX的文件类型常见的有:

f(file),d(directory),l(linked file),s(socket file),p(pipe file),c(character),b(block)


实例四:-size [+-]Number[k/M/G...]

[root@localhost ~]# find /etc -size +1M 

/etc/selinux/targeted/policy/policy.21

/etc/selinux/targeted/modules/active/base.pp

/etc/selinux/targeted/modules/active/base.linked

/etc/selinux/targeted/modules/active/policy.kern

/etc/gconf/schemas/apps_nautilus_preferences.schemas

/etc/gconf/schemas/metacity.schemas

/etc/gconf/schemas/gnome-terminal.schemas

/etc/gconf/schemas/gok.schemas

/etc/gconf/gconf.xml.defaults/%gconf-tree.xml


注意:

-size 2M 表示的是查找[1M,2M],并不是说查找等于2M的文件

-size +1K 表示查找大于1K的文件,很显然-表示小于


实例五:-atime -ctime -mtime -amin -cmin -mmin

1
[root@localhost ~] # find /etc -atime +7

注意,我们知道文件有3个timestamp:access,change,modify

-atime 7 表示在7天之前访问过的文件

-ctime -3 表示在3天之内修改过的文件

-amin -10 表示10分钟之内访问过的文件


这些有时候非常有用,比如,我们的WEB服务器突然异常了,可能是由于配置文件发生了修改导致的,那么我们就可以查下最近一段时间哪些文件发生了修改。

其实除了上面的,还有-perm MODE来根据权限来查找。我这里就不介绍了,大家自学成才吧~另外,我们可以使用-a,-o,not进行条件组合。默认就是-a。


4.Action for find

当我们找到特定文件后,就可以进行ACTION处理,使用-ok,-exec,xargs即可。格式如下:

find yourpath yourpattern -ok COMMAND \;

find yourpath yourpattern -exec COMMAND \;

find yourpath yourpattern | xargs COMMAND ;

注意,对于-ok,-exec而言,必须注意\;,否则语法错误。

在-ok,-exec的COMMAND中,可以使用{}进行文件名引用。

-ok与-exec的区别在于,-ok需要询问,-exec不需要。

xargs需要以管道的方式进行处理。

实例:

1
2
find  /etc  -size +1M |  xargs  echo  {} >> yourfile;
find  -name  '*.sh'  - exec  cp  {} {}.bak \;


5.小结

专家都从菜鸟来,原来find如此easy~



本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1423692,如需转载请自行联系原作者




相关文章
|
3月前
|
移动开发 JavaScript C#
分享53戏源代码总有一个是你想要的(亲测每一个均可用)
分享53戏源代码总有一个是你想要的(亲测每一个均可用)
22 0
|
8月前
怎么删除360base64.dll,这个方法百分百管用
怎么删除360base64.dll,这个方法百分百管用
219 0
|
9月前
|
存储 编译器 C语言
还在为每次打开程序的输入烦恼吗,这篇文章让你不在迷茫
在之前我们编写的程序中,我们总要录入一些数据给予程序用于计算,但是当我们退出程序后录入的数据会销毁,因为此时数据都是存放在内存中。等到下次再运行程序时,数据又得从新录入,这样就非常的难受。
38 0
还在为每次打开程序的输入烦恼吗,这篇文章让你不在迷茫
|
8月前
|
程序员
有了这些不愁找不到对象,520表白代码
有了这些不愁找不到对象,520表白代码
49 0
|
前端开发 PHP 容器
快速定位无用路由 妈妈再也不用担心人工排雷了
快速定位无用路由 妈妈再也不用担心人工排雷了
80 0
快速定位无用路由 妈妈再也不用担心人工排雷了
|
SQL 安全 前端开发
百度快照被改成博彩内容的解决办法
那如何确定网站是否被快照劫持?SINE安全老于给大家详细的介绍一下,首先可以打开百度站长工具,看下近期的收录是否异常,像收录突然猛增,百度的蜘蛛抓取次数是否多了很多,再一个看下site:www.***.com自己的网站,看最近一个月的收录,是否收录大量的世界杯体育,菠菜、QP等恶意内容的百度快照。再一个快照劫持的特征是,直接访问网站是不会出现跳转,从百度点击进入网站,会直接跳转到违规网站上去。我们sinesafe以实际的客户案例给大家看下,像下面这种收录内容,基本上就是网站快照被劫持了,也可以说是网站被黑客攻击了。
178 0
百度快照被改成博彩内容的解决办法
|
存储 自然语言处理 数据处理
今天,我要干掉 if ... else ...
今天,我要干掉 if ... else ...
|
Java 应用服务中间件 容器
APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!
本文主要是分析生产遇到的一个问题,然后开始探究原因,开始的时候发现是 Spring 的原因,因为使用 Map 接收时, headerName 什么格式就是什么格式。 在自己写 demo 时又发现,原来和 Spring 的关系并不大,是容器的原因。不同的容器处理方式不同。所以总结出来相关文章,供大家参考,不足之处,欢迎指正。
557 0
|
设计模式 前端开发 JavaScript
那个一年前找不到工作的男人,2021年怎么样了?
那个一年前找不到工作的男人,2021年怎么样了?