Find 命令参数项详解
Linux 下find 命令在目录结构中搜索文件,并执行指定的操作,它具有许多强大的功能,在运行一个非常耗资源的find命令时通常将它放在后台运行,因为遍历一个很大的文件会很耗费时间
一.命令格式:
find pathname -options[-print -exec -ok]
二.命令功能
用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
三.命令参数
Pathname:find命令所查找的目录路径,例如.表示当前路径 /表示系统根目录
-print:find 命令将匹配的文件输出到标准输出上
-exec:find 命令对匹配的文件执行该参数所给出的shell命令,相应的命令为’commond’
{ },\
-ok: 和-exec作用相同,只不过以一种更为安全的模式来执行参数所给出的shell指令,在执行每一条指令之前,都会提示来让用户确定是否执行.
-type:查找某一类型的文件
b-块设备文件
d-目录
C-字符设备文件
P -管道文件
L-符号链接文件
F-普通文件
-size n :[c]查找文件长度为n块的文件,带有c时表示文件长度按字节计算
-depth:在查找文件时首先查找当前目录中的文件,然后在子目录中查找
-fstype:查找位于某一类型系统中的文件,这些文件系统类型可以在配置文件/etc/fstabe/该文件
1.使用name选项
文件名选项是find命令中最常用的选项,可以单独使用该选项也可以和其他选项一起使用,可以使用某种文件名来匹配文件,但是一定要用引号将文件名模式引起来。不管当前路径是什么,如果要在自己的根目录$HOME 中查找文件名符合的文件,则需要使用~作为“pathname”参数,波浪号代表了你的$HOME目录。
find ~ -name "*.log" -print
(1)想要在当前目录及子目录中查找所有的‘*log’文件,可以用:
find -name "*.log" -print
(2)想要在当前目录及其子目录中查找以一个大小写字母开头的文件,可以用:
find .-name”[A-Z]*”-print
(3)想要在/etc目录中查找文件名以host开头的文件,可以用:
find/etc-name”host*” -print
(4)想要查找$HOME目录中的文件,可以用:
find/-name “*” -print
(5)想要系统高负荷运行就要从根目录下开始寻找所有文件
find/-name”*”-print
如果想在当前目录中查找以一个小写字母开头,最后是2-3加上.log的文件则可以用一下语句:
find .-name "[a-z]*[2-3].log" -print
2.用perm选项
按照文件权限模式用-perm选项,按文件权限模式来查找文件最好选用八进制权限表示法。
如果在当前目录下查找文件权限为644的文件,即文件属主可以读写执行,其他用户可以读和执行的文件
还有一种表示方法:在八进制数字前边加一个-,表示都匹配,如-007就想当与777,-005相当于555
3.忽略某个目录
如果在查找文件时希望忽略某个目录,因为你不知道那个目录中有没有你要查找的文件,则可以用-prune选项来指定需要忽略的目录,在使用-prune选项时要当心,因为如果同时使用了-depth选项那么-prune选项就会被find命令忽略,如果希望在test目录下查找文件,但不希望在test/test3目录中查找用
find test-path”test/test3”-prune -o -print
4.使用find查找文件时怎么避开某个文件目录:
例子1:
在 test目录下不在test4子目录之内的所有文件
命令:
find test -path "test/test4" -prune -o -print
注释:
Find [-path][expression]
在路径列表后边的是表达式
-path “test”为真,则求值-prune,-prune返回真;否则不求-prune,与逻辑表达式为假
例子2:查找某一个确定文件,-name等选项加载-o之后
find test -prune -o -name -print
5使用user和nouser选项
按照文件属主查找文件
例子1:在$HOME目录中查找文件属主为zyp 的文件
find ~ -user zyp -print
例子2在/etc目录下查找文件属主为zyp的文件
find /etc -user zyp -print
例子3 查找主账户已经被删除的文件,可以使用-nouser选项,在/home下查找所有这类文件
命令:find/home -nouser -print
6.按照更改时间或者访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime ,ctime,atime选项,如果系统突然没有可用空间,很可能某一个文件的长度在此期间增长迅速,这是就可以用mtime选项来查找文件,用-减号来限定更改时间在居今n日以内的文件,用+加号来限定更改时间在距今n日以前的文件
# -atime:按访问时间查找文件,-n指N天以内,+n指N天以前
# -mtime -n +n 按文件更改时间查找文件,-n指N天以内,+n指N天以前
#-ctime 按创建时间来查找文件 -n指N天以内,+n指N天以前
-amin -n:查找系统最后N分钟访问的文件
-atime -n:查找系统最后N*24小时访问的文件
-cmin -n:查找系统最后N分钟被改变文件状态的文件
-ctime -n:查找系统最后N*24小时被改变文件状态的文件
-mmin -n:查找文件系统中最后N分钟被改变文件数据的文件
-mtime -n:查找文件系统中最后N*24小时被改变文件数据的文件
总结:min是分钟,time是小时,a是访问,c是改变状态m是改变数据
7. type选项
例子1 在/etc目录下查找所有的目录
命令:find/etc -type d -print
例子2 在当前目录下查找除目录以外的所有类型的文件
命令:find !type d -print
例子3 在/etc目录下查找所有的符号链接文件
命令:find/etc-type| -print
8. 使用size选项:
可按照文件的长度查找文件,这里所指的文件可以是块(block)来计量,也可以用字节来计量,以字节计量文件长度的表达方式为N c;以块计量文件长度只用数字表示即可
在按照文件长度查找文件时,一般使用以字节表示文件长度,在查看文件系统的大小时这时使用块来计量更容易转化
例子1:在当前目录下查找文件长度大于1M字节的文件
find -size +1000000c -print
例子2:在当前目录下查找长度超过10块的文件
find -size +10 -print