find命令的用法
2013-03-09 14:18
190 查看
linux中find命令的用法
一、我们知道grep,egrep,fgrep是查找文本的,下面我们就来了解一下用于查找文件的命令。文件查找:locate ,find,find命令非常强大,在这里我只是把find的部分命令和功能说了一下,如find的功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。又如find语法:find起始目录寻找条件操作 说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作,以下就是find命令的用法及其功能
1、locate:
非实时,模糊匹配,查找是根据全系统文件数据库进行的;手动生成文件数据库:updatedb,速度快
2、find:
实时、精确、支持众多查找标准、遍历指定目录中的所有文件完成查找,查找非常准确但速度慢
格式:find 查找路径 查找标准 查找到以后的处理运作
查找路径:默认为当前路径
查找标准:默认为指定路径下的所有文件
查找到后的处理运作:默认为显示
3、find匹配标准:
-name‘FILENAME’:对文件名做精确匹配
如:find /etc -name 'passwd'
文件名通配:
*;任意长度的任意字符
?:匹配其前面的字符一次或0次
[]:匹配指定范围内的任意单个字符
-iname:文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配
-user USERNAME:根据属主查找
如查找/tmp下属主是hadoop的文件:find /tmp -user hadoop
-group GROUPNAME:根据属组查找
-uid UID:根据UID查找
如 find /tmp -uid 2003
-gid GID:根据GID查找
-nouser:查找没有属主的文件
如查找/tmp下没有属主的文件:find /tmp -nouser
-nogroup;查找没有属组的文件
-type: 类型查找 f(普通文件),d目录),c(字符设备),b(块设备),
l(链接文件),s(套接字文件),p(管道)
如 find /tmp -type s
-size [+|-]#K、#G、#M :大小查找
+K:大于k的
-K:小于K的
K:精确查找大小为K的
如find /tmp -size 1K -ls(精确查找)
二、为了便于查找,我们可不可以把有些命令组合起来,帮助我们快速查找文件呢?
这个当然可以啦,下面我们来了解一下组合命令的使用;
1、组合条件:
-a:与
-o: 或 优先级最低
-not:非 优先级最高
如find /tmp -not -type d:查找非目录,
如查找/tmp/test 属主不是user也不是user2的
find /tmp -not -user user1 -a -not -user user2,也可以写成
find /tmp -not \(-user user1 -o -user user2\)。(运用的摩根定律)
如查找/tmp下不是目录,并且还不能是套接字类型的文件
find /tmp -not -type d -a -not -type s
-mtime:修改时间(单位天)([+-]# +:至少#天 -:#天之内)
-ctime:改变时间 find ./ -mtime -5
-atime:访问时间
-mmin:修改时间((单位分钟)
-cmin:改变时间
-amin:访问时间
-perm MODE:精确匹配 ,根据权限查找
-perm /MODE:有一个匹配就行
如find ./ -perm /644
-perm -MODE:文件权限能完全包含此MODE时才能显示
find ./ -perm -001 :查找其他文件有执行权限的
2、运作:
-print:(默认)显示,将查找到的文件输出到标准输出
-ls :类似ls-l的形式显示每一个文件的详细信息
-ok COMMAND {} \:每一次操作都需要用户确认
-exec COMMAND {} \:不需要用户确认
find ./ -perm -006 -exec chmod o-w {} \;
find ./ -perm -020 -exec mv {} {}.new\; 改名字,只要引用文件的文件名就要用{}
查找家目录下所有以.sh结尾,并且所有用户都具有执行权限,把其他用户的执行权限去掉
find ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \;
-xargs:从标准输入接收命令并执行
find /etc -size +1M | xargs echo >> /tmp/etc.largefiles
3、下面我们来运用一下find命令
1)、查找/var目录下属主为root并且属组为mail的所有文件;
看到这个题目你的思路是什么?我首先会想到要用组合条件:与关系-a ,查看属主用-user,
属组用-group,那这个题就迎刃而解啦,非常简单
find /var -user root -a -group mail
2)、查找/usr目录下不属于root,bin,或student的文件;
用到了组合条件的非、与(-not,-a)
find /usr -not -user root -a -not -user bin -a -not -user student
3)、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
这里有几个关键词:“最近一周、内容修改过、且、不属于”“ -mtime -7 、-not 、-a"
find /etc -mtime -7 -not -user root -a -not -user student
4)、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
这题和上题类似,但比它要求多了,要求要修改属主属组用chown,也用到了-exec,切记用{} \ ;结尾
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5)、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
用到了-size大小,还有我们前面学到的输出重定向中的>>追加,也可以用-xargs,但要用命令管道,
相比之下还是第一种比较容易理解
find /etc -size +1M >> /tmp/etc.largefiles
find /etc -size +1M | xargs echo >> /tmp/etc.largefiles
6)、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
修改权限用-perm,首先我们先想到所有用户都没有写权限为222,并且都要满足用-perm -222
如果取反为 -not -perm /222
find /etc -not -perm /222 -ls
怎么样你都作对了吗?呵呵,这就是find命令的功能,其实并不难
只要能熟练掌握并运用了find命令,你会发现它的功能要远远超出你的想象。
一、我们知道grep,egrep,fgrep是查找文本的,下面我们就来了解一下用于查找文件的命令。文件查找:locate ,find,find命令非常强大,在这里我只是把find的部分命令和功能说了一下,如find的功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。又如find语法:find起始目录寻找条件操作 说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作,以下就是find命令的用法及其功能
1、locate:
非实时,模糊匹配,查找是根据全系统文件数据库进行的;手动生成文件数据库:updatedb,速度快
2、find:
实时、精确、支持众多查找标准、遍历指定目录中的所有文件完成查找,查找非常准确但速度慢
格式:find 查找路径 查找标准 查找到以后的处理运作
查找路径:默认为当前路径
查找标准:默认为指定路径下的所有文件
查找到后的处理运作:默认为显示
3、find匹配标准:
-name‘FILENAME’:对文件名做精确匹配
如:find /etc -name 'passwd'
文件名通配:
*;任意长度的任意字符
?:匹配其前面的字符一次或0次
[]:匹配指定范围内的任意单个字符
-iname:文件名匹配时不区分大小写
-regex PATTERN:基于正则表达式进行文件名匹配
-user USERNAME:根据属主查找
如查找/tmp下属主是hadoop的文件:find /tmp -user hadoop
-group GROUPNAME:根据属组查找
-uid UID:根据UID查找
如 find /tmp -uid 2003
-gid GID:根据GID查找
-nouser:查找没有属主的文件
如查找/tmp下没有属主的文件:find /tmp -nouser
-nogroup;查找没有属组的文件
-type: 类型查找 f(普通文件),d目录),c(字符设备),b(块设备),
l(链接文件),s(套接字文件),p(管道)
如 find /tmp -type s
-size [+|-]#K、#G、#M :大小查找
+K:大于k的
-K:小于K的
K:精确查找大小为K的
如find /tmp -size 1K -ls(精确查找)
二、为了便于查找,我们可不可以把有些命令组合起来,帮助我们快速查找文件呢?
这个当然可以啦,下面我们来了解一下组合命令的使用;
1、组合条件:
-a:与
-o: 或 优先级最低
-not:非 优先级最高
如find /tmp -not -type d:查找非目录,
如查找/tmp/test 属主不是user也不是user2的
find /tmp -not -user user1 -a -not -user user2,也可以写成
find /tmp -not \(-user user1 -o -user user2\)。(运用的摩根定律)
如查找/tmp下不是目录,并且还不能是套接字类型的文件
find /tmp -not -type d -a -not -type s
-mtime:修改时间(单位天)([+-]# +:至少#天 -:#天之内)
-ctime:改变时间 find ./ -mtime -5
-atime:访问时间
-mmin:修改时间((单位分钟)
-cmin:改变时间
-amin:访问时间
-perm MODE:精确匹配 ,根据权限查找
-perm /MODE:有一个匹配就行
如find ./ -perm /644
-perm -MODE:文件权限能完全包含此MODE时才能显示
find ./ -perm -001 :查找其他文件有执行权限的
2、运作:
-print:(默认)显示,将查找到的文件输出到标准输出
-ls :类似ls-l的形式显示每一个文件的详细信息
-ok COMMAND {} \:每一次操作都需要用户确认
-exec COMMAND {} \:不需要用户确认
find ./ -perm -006 -exec chmod o-w {} \;
find ./ -perm -020 -exec mv {} {}.new\; 改名字,只要引用文件的文件名就要用{}
查找家目录下所有以.sh结尾,并且所有用户都具有执行权限,把其他用户的执行权限去掉
find ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \;
-xargs:从标准输入接收命令并执行
find /etc -size +1M | xargs echo >> /tmp/etc.largefiles
3、下面我们来运用一下find命令
1)、查找/var目录下属主为root并且属组为mail的所有文件;
看到这个题目你的思路是什么?我首先会想到要用组合条件:与关系-a ,查看属主用-user,
属组用-group,那这个题就迎刃而解啦,非常简单
find /var -user root -a -group mail
2)、查找/usr目录下不属于root,bin,或student的文件;
用到了组合条件的非、与(-not,-a)
find /usr -not -user root -a -not -user bin -a -not -user student
3)、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
这里有几个关键词:“最近一周、内容修改过、且、不属于”“ -mtime -7 、-not 、-a"
find /etc -mtime -7 -not -user root -a -not -user student
4)、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
这题和上题类似,但比它要求多了,要求要修改属主属组用chown,也用到了-exec,切记用{} \ ;结尾
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5)、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
用到了-size大小,还有我们前面学到的输出重定向中的>>追加,也可以用-xargs,但要用命令管道,
相比之下还是第一种比较容易理解
find /etc -size +1M >> /tmp/etc.largefiles
find /etc -size +1M | xargs echo >> /tmp/etc.largefiles
6)、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
修改权限用-perm,首先我们先想到所有用户都没有写权限为222,并且都要满足用-perm -222
如果取反为 -not -perm /222
find /etc -not -perm /222 -ls
怎么样你都作对了吗?呵呵,这就是find命令的功能,其实并不难
只要能熟练掌握并运用了find命令,你会发现它的功能要远远超出你的想象。
相关文章推荐
- Linux中find的命令用法小结
- linux下find查找命令用法
- which、whereis、locate、find 命令用法
- find命令的用法
- linux下find查找命令用法
- linux下find命令根据系统时间查找文件用法
- find命令格式与用法
- Linux find命令实例教程 15个find命令用法
- find 命令-exec,xargs用法的一点总结
- Find命令用法
- linux中find命令的用法
- Linux中find、grep命令详细用法
- find命令用法介绍
- linux下find查找命令用法
- linux下find(文件查找)命令的用法总结
- Linux命令之find在实际项目中的用法
- Linux下find命令参数及用法详解
- Linux下find命令用法
- linux命令之find命令的12个常用参数详解(含具体用法和注意事项)
- Linux 基础学习 文件查找命令 find 部分用法