Find命令详解
Find是linux中的一个极其强大的文件查找命令;可以根据目标文件的文件名、大小、类别、权限、时间戳等条件来进行查找,只有完全相符的才会被列出来;下面会详细介绍下Find命令的用法。
名称:find
格式:find [目标路径] [条件选项] [处理动作]
条件选项:
-name:根据文件名查找
-iname:忽略目标文件名的大小写
支持通配符:
*,?,[],[^]
例:find /etc -name(-iname) “passwd” 查找名字里面包含passwd的文件
例:find /etc -name(-iname) “p*” 查找以p开头的文件
-type:根据文件类型查找
f:普通文件
d:目录文件
l:符号链接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
例:find /etc -type f 查找/etc下是类型为文件的
根据文件的从属关系:
-user USERNAME:查找属主指定用户的所有文件
例:find /etc -user root 查找/etc属主为root的所有文件
-group GROUPNAME:查找属组指定组的所有文件
-uid UID:查找属主指定的UID的所有文件
-gid GID:查找属组指定的GID的所有文件
-nousr:查找没有属主的文件
-nogroup:查找没有属组的文件
-size:根据文件大小查找
常用单位:K、M、G
例:find /etc -size [+|-]1K 查找/etc下所有大于|小于1K的文件
根据时间戳查找:
以天为单位
-atime[+|-]:根据访问时间
例:find /etc -size [+|-]7 查找一周之内访问过的文件
-mtime:根据修改时间
-ctime:根据改变时间
可以以分钟为单位
-perm:根据文件权限查找
-perm [/|-] 权限
例:
1. find /etc -perm 666 查找/etc下权限为666的所有文件
2. find /etc -perm /222 查找/etc下[u,g,o]任何一类用户有写权限的文件
3.find /etc -perm -222 查找/etc 下[u,g,o]同时满足写权限的文件
组合测试:
-a:与
例:find /etc -name “passwd” -a -user root
查找/etc下名字含有“passwd” 且属主为root的文件名
-o:或
例:find /etc -type f -o -size +10K
查找/etc下类型为文件或文件大小大于10k以上的文件
-not|!:非
例:find /etc ! -name “passwd”
查找/etc下名字里没有passwd的文件
处理动作:
-print:默认的,输出至标准输出
-ls:相当于执行ls -l
-delete:对查找到的文件进行删除
-fls:对查找到的文件以长格式的方式保存到指定的文件中
find命令可以结合xargs命令,避免了有些命令过长导致报错;下面介绍下xargs的简单用法:
xargs命令:将前一个命令的输出作为参数
作用:是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题
格式:xargs [options] [command]...
常用选项:
-p:操作具有可交互性
-i:得到的每项名称替换为{}
-n:限制单个命令行的参数
-t:输出命令执行的详细信息
例:find /etc -name "passwd" | xargs -t ls -lh
查找/etc下名字有passwd包含的文件并且人性化的输出