从零开始学Linux_10_find

一、find命令(搜索文件)

1、find命令的主要作用是对树形目录层次结构进行彻底检查。

2、find命令的一般格式:

find pathname -expressions

二、find常用表达式

1、有三种表达式,选项表达式(不常用),条件表达式和操作表达式

-mount 选项表达式,用来防止find命令的搜索范围超出当前文件系统的边界。返回值常为真。
-group grp 条件表达式,检查当前的文件是否具有与grp相同的GID或组名。如果两者一致,返回真值,否则返回假值。
-name pattern 条件表达式,检查文件名是否和模式pattern相同。pattern可以用正则表达式给出。必要时使用引号。当文件名与pattern一致时.返回真值.否则为假。
-type t 条件表达式,检查当前文件的类型是否是t。对目录讲,t值可以是d。对普通文件讲,t值可以是f,对连接讲,t值可以是l等等。如果当前的文件的类型是t,返回真值,否则为假。
-user usr 条件表达式,检查当前的文件的所有者或UID是否是usr。如果两者一致,返回真值,否则为假。
-exec cmd 操作表达式,用来执行cmd命令。如果要将当前的文件名传送给命令,应该加{}标记,分号用来表示cmd的结束,并和后面可能出现的表达式分开。如果成功地执行了cmd命令,返回真值,否则为假。
-print 操作表达式,将当前的文件名送到标准输出设备显示,返回值常为真。

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

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

-mmin    -n                   #n天以内更改时间

2、举例

(1)/usr/lib    # find . -name ‘bin*‘  (等同于# find . -name ‘bin*‘ -print)

./initramfs-tools/bin

./guile-1.8/bin

./firefox/distribution/searchplugins/locale/en-US/bing.xml

./firefox/distribution/searchplugins/locale/zh-CN/bing.xml

./firefox/distribution/searchplugins/locale/en-GB/bing.xml

./firefox/distribution/searchplugins/locale/en-ZA/bing.xml

./pm-utils/bin

./klibc/bin

./ure/lib/binaryurp.uno.so

./ure/bin

./thunderbird/distribution/searchplugins/locale/en-US/bing.xml

./python2.7/binhex.pyc

./python2.7/binhex.py

(2)# find . -name ‘bin*‘ -type d -print (先通过文件名称进行过滤,再通过文件类型进行过滤)

./initramfs-tools/bin

./guile-1.8/bin

./pm-utils/bin

./klibc/bin

./ure/bin

(3)# find . -name ‘*.bak‘ -type f -exec rm {} \; -print (-exec执行cmd命令,{}表示将当前文件作为传送命令,\;表示rm的结束)

注意:{}后要“空格”并输入"\;",否则出错

下面打印出删除的信息:

./test3.bak

./test.bak

./test2.bak

三、find逻辑表达式

逻辑表达式 描述
e1 -a e2 仅当e1为真时,对e2求值
e1 e2 同上
e1 -o e2 仅当e1为假时,对e2求值
e1,e2 对两个表达式都求值,先e1,后e2
!e1 当e1为假时结果为真,反过来也一样

(1)当前目录下有a.bak b.bak

# find . -name ‘*.bak‘ -type f -exec echo {} \; -print

./a.bak

./a.bak

./b.bak

./b.bak

四、find示例

1、查找当前目录下的linux文件夹中包含有名为“a”文件中,存在”b“字符的行号

# find ./linux/ -name a | xargs grep -n "b"

./linux/a:1:aaabbb

./linux/test/a:1:aaabbb

2、其他

find . -user root -print

find . -type f -mtime -4 –print (列出最近四天内修改过的文件)

find . -size +5000k -exec ls -lh {} \; (将大于5000k的文件打印出来)

find . \( -name  "[Aa]*" -o -name "*[Aa]" \)  -print (打印以Aa开头或以Aa结尾的文件)

五、思考

1、统计在/etc/为起点的目录树中,包含字符串“telnet”,(不区分大小写)的文件的数目。请写出这条命令?

(1)方法一:用-exec

第一步:

# find /etc/ -type f -exec grep -il "telnet" {} \;

/etc/bash_completion

/etc/bash_completion.d/qemu

/etc/services

第二步:

# find /etc/ -type f -exec grep -il "telnet" {} \; | wc -l

3

(2)方法二:用管道

# find /etc/ -type f | grep -il "telnet"(错误,表示文件名称是否包含telnet)

# find /etc/ -type f | xargs grep -il "telnet"

/etc/bash_completion

/etc/bash_completion.d/qemu

/etc/services

# find /etc/ -type f | xargs grep -il "telnet" | wc -l

3

2、文件中是否含有字符串?

可以用$ strings 命令

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 07:03:18

从零开始学Linux_10_find的相关文章

从零开始学android<android事件的处理方式.二十四.>

在android中一共有 多种事件,每种事件都有自己相对应的处理机制 如以下几种 1 单击事件 View.OnClickListener public abstract void onClick (View v) 单击组件时触发 2 单击事件 View.OnLongClickListener public abstract boolean onLongClick (View v) 长按组件时触发 3 键盘事件 View.OnKeyListener public abstract boolean

IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour

前段时间发了一个破解的PN532工具,详见 ===========================IC卡解密工具 PN532工具XP 爆破版http://www.52pojie.cn/thread-597896-1-1.html IC卡解密从零开始学2  解密工具PN532-mfoc-mfcuk-GUIhttp://www.52pojie.cn/thread-604402-1-1.html =========================有很多人私信和回复希望有个详细点的介绍... 好吧,本着

从零开始学android<RatingBar评分组件.二十三.>

如果现在用户要对某个应用程序打分往往会使用图所示的组件,通过选择的"五角星"的个数来决定最终的打分成绩 这样的功能在Android之中,可以使用RatingBar组件实现,使用此组件可以方便用户的输入,而且很直观,RatingBar类的定义结构如下: java.lang.Object ? android.view.View ? android.widget.ProgressBar ? android.widget.AbsSeekBar ? android.widget.RatingBa

从零开始学android<AutoCompleteTextView随笔提示文本框.十九.>

随笔提示功能可以很好的帮助用户进行方便的信息输入,而在Android之中也提供了与之类似的功能,而这个功能的实现就需要依靠android.widget.AutoCompleteTextView类完成,此类的继承结构如下: java.lang.Object ? android.view.View ? android.widget.TextView ? android.widget.EditText ? android.widget.AutoCompleteTextView No. 方法 类型 描述

从零开始学android<使用嵌套布局实现计算器界面.十七.>

所谓的嵌套布局就是在一个文件中嵌套多个布局文件 <span style="font-size:18px;"> <LinearLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical" > <FrameLayout android:layou

【高德地图API】从零开始学高德JS API(七)——定位方式大揭秘

摘要:关于定位,分为GPS定位和网络定位2种.GPS定位,精度较高,可达到10米,但室内不可用,且超级费电.网络定位,分为wifi定位和基站定位,都是通过获取wifi或者基站信息,然后查询对应的wifi或者基站位置数据库,得到的定位地点.定位数据库可以不断完善不断补充,所以,越定位越准确.本文详细描述了,如果使用高德JS API来实现位置定位.城市定位的方法,包含了IP定位,浏览器定位,检索定位等多种网络定位方法.当然,如果您的手机有GPS功能,那么使用浏览器定位的时候,会自动获取GPS信息,使

从零开始学ios开发(八):Autorotation and Autosizing

不好意思,这一篇间隔的时间有点长,最近实在是事情太多,耽搁了,好了,长话短说,下面继续学习ios. 这次学习的内容是Autorotation和Autosizing,Autorotation就是屏幕内容自动旋转,因为iphone有重力感应系统(陀螺仪???),屏幕的内容会随着用户手握iphone的方式(竖着握Portrait.横着握Landscape)而改变,这个相信大家都已经有所体会,Autosizing是指当iphone的屏幕旋转后,屏幕里面控件的大小和位置也会自动改变.好了,下面跟着例子继续

【高德地图API】从零开始学高德JS API(四)搜索服务

摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公交导航,驾车导航,步行导航,道路查询(交叉口),行政区划等等.如果说覆盖物Marker是地图的骨骼,那么服务,就是地图的气血.有个各种各样的地图服务,我们的地图应用才能变得有血有肉,活灵活现.第四篇拆成了几个要点,本篇主要讲搜索服务.包括周边搜索,关键词搜索,范围搜索,搜索提示(自动完成,输入提示),行政区域,交叉路口,检索自有数据(云图). demo:http://zhaoziang.com/amap/zero_4_1.html

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib.当然本文还会介绍自定义插件的使用. ------------------------------------------------------------------------------------------------- 第一部分 控件 目前官方支持的控件包含:缩放控制条-地图