查找文件
loacte :功能较弱,速度快, locate 路径 文件名关键字
整个系统中查找:locate .tar
系统将所有文件名都记录在一个文件中:/var/lib/molcate的数据库中。locate 没有遍历硬盘去查找。但如果这个数据库没有实时更新,则会出一些问题。默认每天更新一次,可通过updatedb来更新它,但可能花费一些时间。
-----------
find 查找范围 查找条件 动作
-name 得是文件名称,而不是关键字........要用关键字则要使用通配符
-type 根据文件类型来查找:d:目录文件 f:普通文件 c:表示字符设备文件 b:块设备文件; l符号链接文件
-size :大小 find -size / -size -3k ls :c 字节 k : M G
根据文件拥有者,从属拥有者来四个:-user -uid -group -gid
根据访问权限数字来查找 -perm find -perm 754
-------------------
连用:与 -a 或 -o 非 ! find /temp \(xxxx -a xxxxxx -a .........) -ls
动作选项: 找完了之后,要对文件做些什么: -exec rm -rf {} \;
-ok 可替换-exec 只不过是一种更加安全的模式去做。有逐个提示。
\是转意字符。
命令
用法:find <path> <-option> [-print | -ls] [-exec|-ok <command> {} \;]
在<path>指定的目录结构中搜索文件,并执行指定的操作。
find需要根据某个条件在特定的目录进行查找,有以下常用的查找选项:
¨ -print 将查找到的文件输出到标准输出
¨ -exec command {} \; 将查到的文件执行command操作,{} 和 \;之间有空格
¨ -fprint <filename> 将查找到的文件输出到指定文件
¨ -ok 和-exec相同,只不过在操作前要询问用户
¨ -name <filename> : 查找名为filename的文件,即按文件名查找。
¨ -iname <filename> : 与-name相同,只是忽略大小写(-i);
¨ -perm : 按执行权限来查找
¨ -user <username> : 按文件属主来查找
¨ -group <groupname> : 按组来查找
¨ -user <username> : 按文件属主来查找
¨ -amin <-n|+n> : 按文件访问时间来查找文件,-n指n分钟以内,+n指n分钟以前
¨ -atime <-n|+n> : 按文件访问时间来查找文件,-n指n天以内,+n指n天以前
¨ -cmin <-n|+n> : 按文件创建时间来查找文件,-n指n分钟以内,+n指n分钟以前
¨ -ctime <-n|+n> : 按文件创建时间来查找文件,-n指n天以内,+n指n天以前
¨ -mmin <-n|+n> : 按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前
¨ -mtime <-n|+n> : 按文件更改时间来查找文件,-n指n天以内,+n指n天以前
¨ -empty : 空白文件、空白文件夹、没有子目录的文件夹
¨ -newer <f1 !f2> : 查更改时间比f1新但比f2旧的文件
¨ -type <b|d|c|p|l|f> : 查是块设备/目录/字符设备/管道/符号链接/普通文件
¨ -prune : 忽略某个目录
¨ -size <+n|-n> :根据文件大小查找文件,+n表示超过n大小的文件,-n表示小于n大小的文件
注意
¨ -size <n[cwbkMG]>,其中:n表示文件大小的数值,b表示512字节的块,c表示字节,k表示K字节,M表示M字节(1024*1024字节=1024k),G表示G字节(1024*1024*1024字节=1024M)
¨ -type < [bcdpfls]>,其中b表示块设备文件,c表示字符设备文件,d表示目录,p表示命名管道文件,f表示普通文件,l表示符号链接文件,s表示socket文件
注意
¨ find命令的所谓“命令动作(Actions)”,表示在查找到文件后,要对这些文件所做的操作,我们在这里只介绍其中三个常用的命令动作:
1. –print:find命令的默认动作,将查找到的文件名输出
2. –ls:将将查找到的文件名以ls –dils格式输出
3. -exec command ; :对查找到的文件名执行指定命令,命令command由用户指定,用{} 代表查找到的文件,用\;结束。
4. -ok command ; :与-exec非常类同,只不过在对文件执行指定命令之前会询问用户是否执行
注意
¨ 在Linux中与文件相关的时间属性有三个:
1. atime:文件最后被访问时间(Time when file data was last accessed.),atime 是在读取文件或者执行文件时更改的。
2. mtime:文件内容最后被更改的时间(Time when data was last modified.),mtime 是在写入文件时随文件内容的更改而更改的
3. ctime:文件状态(属性或者内容)最后被更改的时间(Time when file status was last changed),ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。
¨ 常常在一些文章和资料中提到的文件时间戳(Timestamp)指的是文章的mtime。
注意
¨ 在find命令支持用逻辑运算符来操作单个逻辑条件,或者将逻辑条件连接起来:
1. –a 表示与
2. –o 表示或
3. !表示取反
¨ 注意:使用多个条件时,这些条件要用圆括号括起来,左右圆括号还要使用反斜杠"\"来进行转义,以防止shell的解释;