Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

体验了一把Virtual Box

find 基本用法

galeki posted @ 2007年2月24日 00:44 in Linux with tags linux find , 6127 阅读
我们经常要在日常的工作中查找文件,要说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命令显示每个文件的文件类型



以上只是find的一些简单的用法,用来应付平日的工作基本足够,想更深入的了解find,可以去探索find的man page。
Avatar_small
galeki 说:
2007年2月24日 21:59
引用来自:lyanry @ 2007年02月24日 09:35AM
呵呵,这两天我每天夜里4点睡,12点起
Avatar_small
lyanry 说:
2007年2月25日 00:30 埃。我这段时间一直感冒,发烧,流鼻涕,难受死了。
Avatar_small
galeki 说:
2007年2月25日 00:53 天……怪不得一直都没见你上来
Avatar_small
loybbb 说:
2007年7月09日 06:32

可不可以有背景音乐的?

Avatar_small
galeki 说:
2007年7月09日 10:18

暂时没有这个功能,我现在也在考虑是否下一版加入添加自定义代码的功能。

不过怎么发到这里来了


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter