妈妈再也不用担心我找不到文件了---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

[[email protected] ~]# find . -name "*.sh"
./manageuser.sh
./13.sh
./17.sh
./25.sh
./mytask.sh

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

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

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

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

[[email protected] ~]# find /etc -uid 501
[[email protected] ~]# 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‘

[[email protected] ~]# 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...]


[[email protected] ~]# 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

[[email protected] ~]# 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需要以管道的方式进行处理。

实例:

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

5.小结

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

妈妈再也不用担心我找不到文件了---find,布布扣,bubuko.com

时间: 2024-10-05 04:27:39

妈妈再也不用担心我找不到文件了---find的相关文章

妈妈再也不用担心我找不到spring源码了!

获取spring源码: http://repo.springsource.org/libs-release-local/ http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEASE/ 从第一个一步步找下去,spring和security都有,包括source源代码 如 spring-aspects-3.2.13.RELEASE.jar对应源码文件为: spring-aop-3.2

利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了

前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体用法: 先买了一个便宜点的编码器: <ignore_js_op> 把刷错的BIOS芯片先拆下来:<ignore_js_op> 把芯片放到编码器上: 再找一台电脑,我的笔记本派上用场了,下载编码器的驱动程序和编码器软件:  <ignore_js_op> <ignore_

Matlab命令合集 妈妈再也不用担心我不会用matlab了

matlab命令 一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变量名, whos 可以查看变量名细节.3.功能键:功能键 快捷键 说明方向上键 Ctrl+P 返回前一行输入方向下键 Ctrl+N 返回下一行输入方向左键 Ctrl+B 光标向后移一个字符方向右键 Ctrl+F 光标向前移一个字符Ctrl+方向右键 Ctrl+R 光标向右移一个字符Ctrl+方向左键 Ctr

收藏 | 15 个你非了解不可的 Linux 特殊字符,妈妈再也不用担心我看不懂这些符号了!

原文:收藏 | 15 个你非了解不可的 Linux 特殊字符,妈妈再也不用担心我看不懂这些符号了! 不知道大家接触 Linux 系统有多久了,可曾了解过 Linux 中有哪些特殊的字符呢?其实啊,那些特殊字符都大有用处呢,今天的文章就给大家简单地科普一下 Linux 中你需要了解的 15 个特殊字符,想学或刚学 Linux 的小伙伴赶紧上车了为! ~ 主目录 这个波浪号 ~ 指的是主目录,也就是我们用户的个人目录,无论你身在何方,输入 cd ~ 它将带你回家! cd ~ 更高端的玩法就是在它后面

Swift详解之四-------妈妈再也不用担心我的闭包了

妈妈再也不用担心我的闭包了 注:本文为作者自己总结,过于基础的就不再赘述 ,都是亲自测试的结果.如有错误或者遗漏的地方,欢迎指正,一起学习. swift中闭包是一个很强大的东西,闭包是自包含的函数代码块,可以在代码中被传递和使用.跟C 和 Objective-C 中的代码块(blocks)很相似 .这个大家必须掌握!必须掌握!必须掌握!重要的事情要说三遍 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包.下面我们就来攻克它! 1.闭包函数

Xcode7的发布后的crash跟踪,轻松定位崩溃代码 Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS

Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BAD_ACCESS一直是很多开发者的噩梦,因为这个错误很不直观,出现后往往要花很长时间才能定位到错误.苹果这次带来了革命性的提升. 在项目的Scheme中Diagnostics下,选中enable address sanitizer(注意选中后Xcode会重新编译整个项目). 这样设置后,如果再出现类

妈妈再也不用担心我js跨域了。。

$.getJSON('http://www.example.com/?aa=bb&callback=?', function(r){ console.log(r) }); //callback=?参数带上,妈妈再也不用担心我跨域了.jquery的getJSON利用的也是JSONP的原理去实现的.

妈妈再也不用担心我使用git了

Dec 29, 2014 git git由于其灵活,速度快,离线工作等特点而倍受青睐,下面一步步来总结下git的基本命令和常用操作. 安装msysgit 下载地址:msysgit,安装完成后配置系统环境变量,打开git bash,尽量少用图形化工具git gui,推荐使用命令行. 你可以在本地操作git,也可以在远程服务器仓库操作git,例如github,这样你就需要配置下ssh key,详情请查看官方文档说明generating-ssh-keys git操作 1.检出仓库(克隆仓库) 本地克隆

玩物涨智:妈妈再也不用担心我的学习了

早上逛国外网站的时候看到了一篇挺有意思的文章,描述的是提升人类智力的几种方法.其中包含了为中国父母们所深恶痛绝的电子游戏等方式. 下面对这几种方法做简要的描述如下: 运动有利于物体识别记忆.会释放脑源性神经营养因子(BDNF),BDNF可由大脑自然分泌,能够起到调节痛苦和恐惧的作用,BDNF缺乏会导致创伤后压力紊乱,也就是俗称的恐惧症.BDNF能够使大脑不断重写覆盖痛苦的记忆,并在重写的过程中建立信心和安全感. 玩乐器可以提升认知能力,语言表达能力,和信息处理能力等 玩电子游戏能开发我们的工作记