- 最后登录
- 2012-5-18
- 在线时间
- 572 小时
- 金币
- 14238
- 注册时间
- 2010-8-17
- 阅读权限
- 200
- 帖子
- 2441
- 精华
- 79
- 积分
- 998944
- UID
- 38568
  
TA的每日心情 | 奋斗 昨天 10:47 |
|---|
签到天数: 204 天 [LV.7]常住居民III - 最后登录
- 2012-5-18
- 在线时间
- 572 小时
- 金币
- 14238
- 注册时间
- 2010-8-17
- 阅读权限
- 200
- 帖子
- 2441
- 精华
- 79
- 积分
- 998944
- UID
- 38568
|
发表于 2010-8-24 15:46:25
|显示全部楼层

我们经常要在日常的工作中查找文件,要说linux下最强大的文件查找工具,非find莫属。find可以从文件名、读取修改时间、大小、类型等等来筛选文件,可以完成日常几乎所有的查找需求。 来看一个简单的例子:
find /tmp/ -name 'galeki*'
意思就是在/tmp目录下找出以“galeki”开头的文件,-name指出是对文件名进行筛选,是不是很简单明了?除了文件名,find还有更强大的筛选条件:
1.时间:
| 参数 | 意义 | | -atime n | 上一次存取时间在n*24小时前以内的文件 | | -ctime n | 上一次状态改变在n*24小时前以内的文件 | | -mtime n | 上一次修改时间在n*24小时前以内的文件 | | -newer file | 比file所指的文件还要新的文件 | 2.大小:
| 参数 | 意义 | | -size n[bkMG] | 大小为n(b为比特,k为KB,M为MB,G为GB)的文件 | 3.所有者: | 参数 | 意义 | | -user name | 所有者用户名称是name的文件 | | -group name | 所有者用户组群名称是name的文件 |
例子: find /tmp/ -name 'sess*' -mtime 1 #在/tmp目录下找到所有以'sess'开头、并且在一个小时以内修改过的文件
find ./ -name '*.zip' -size 546k #在当前目录下找到所有546KB的zip压缩包文件
find /tmp/ -user 'galeki' #在/tmp目录下找到所有所有者为galeki的文件
另外,还可以用"+"、"-"来进一步修饰时间和大小的条件:
find src/ -mtime +2 #找出src目录下上一次修改时间在2天以前的文件
find download/ -size +50M #在download目录下找出大于50M的文件
光找出文件还不够,我们还要对找出的文件进行处理才有意义,一般来讲可以把find的查找结果传递给其他的命令做进一步处理。find本身也提供了许多处理动作的选项。
常用的处理动作:
| 参数 | 意义 | | -print | 打印出找出文件的完整地址,一个文件一行 | | -delete | 删除找出的文件 | | -exec command {} ; | 对每一个找到的文件执行command命令,
并用文件替换"{}",“;”是固定的结束符。
| 例子: find /tmp/ -ctime +7 -delete #删除/tmp目录下一周以前创建的文件
find ./ -name '*.unk' -exec file {} ; #找出当前文件夹下后缀是unk的文件,并用file命令显示每个文件的文件类型 |
|