@[TOC](linux find命令几斤)挤坏跟函
linux find命令总结
转载自:http://blog.sina.com.cn/s/blog_7a732aa10100xlal.html
Linux 查找命令是Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的条件来搜索和查找文件和目录列表的命令。查找可以在各种条件下使用,您可以通过权限,用户,组,文件类型,日期,大小等可能的条件查找文件。本文将分为五个部分,从基本到提前使用find命令。
第一部分:查找名称查找文件的基本查找命令
第二部分:根据他们的权限查找文件
第三部分:基于所有者和组的搜索文件
第四部分:根据日期和时间查找文件和目录
第五部分:根据大小查找文件和目录
第一部分 - 查找名称查找文件的基本查找命令
1.使用当前目录中的名称查找文件
在当前工作目录中查找名称为test.c的所有文件。
2.在主目录下查找文件
查找/ home目录下的所有文件,名称为test。
(上文中的前面两个find没有权限)
3.使用名称和忽略案例查找文件
找到名称为test的所有文件,并在/ home目录中同时包含大写和小写字母。
4.使用名称查找目录
在/目录中查找名称为test的所有目录。
5.使用名称查找PHP文件
在当前工作目录中查找名为test.PHP的所有PHP文件。
6.查找目录中的所有PHP文件
查找目录中的所有php文件。
第二部分 - 根据他们的权限查找文件
7.查找777个权限的文件
查找权限为777的所有文件
8.查找没有777权限的文件
查找所有文件未经许可777。
9.查找具有644个权限的SGID文件
查找权限设置为644的所有SGID位文件。
10.找到具有551权限的粘滞位文件
查找权限为551的所有Sticky Bit设置文件。
11.查找SUID文件
查找所有SUID集文件。
12.查找SGID文件
查找所有SGID设置文件
13.查找只读文件
查找所有只读文件。
14.查找可执行文件
查找所有可执行文件。
15.找到777个权限和Chmod到644的文件
查找所有777个权限文件,并使用chmod命令将权限设置为644
16.找到具有777个权限的目录和Chmod到755
查找所有777个权限目录,并使用chmod命令将权限设置为755。
17.查找并删除单个文件
找到一个名为test.c的文件并将其删除
18.查找并删除多个文件
查找和删除多个文件,如.mp3或.txt,然后使用。
19.查找所有空文件
在特定路径下查找所有空文件。
20.查找所有空目录
将特定路径下的所有空目录归档。
21.文件所有隐藏文件
要查找所有隐藏的文件,请使用以下命令。
第三部分 - 基于所有者和组的搜索文件
22.查找基于用户的单个文件
在所有者root的/ root目录下查找名为test.c的所有或单个文件。
23.查找基于用户的所有文件
查找~目录下属于用户neil的所有文件。
24.查找基于组的所有文件
查找/ home目录下属于Group Developer的所有文件。
25.查找用户的特定文件
查找~目录下的用户neil的所有.txt文件
第四部分 - 根据日期和时间查找文件和目录
26.查找最近50天修改的文件
查找50天后修改的所有文件。
27.查找最近50天访问的文件
查找50天后访问的所有文件。
28.查找最后50-100天修改的文件
查找所有被修改超过50天以及少于100天的文件。
29.在过去1小时内查找更改的文件
查找最近1小时内更改的所有文件
30.在最近1小时内查找修改的文件
查找最近1小时内修改的所有文件。
31.查找最近1小时内访问的文件
查找最近1小时内访问的所有文件。
第五部分 - 根据大小查找文件和目录
32.找到50MB的文件
要找到所有50MB的文件,请使用。
33.查找大小在50MB到100MB之间
找到大于50MB且小于100MB的所有文件。
34.查找并删除100MB的文件
查找所有100MB文件并使用一个命令删除它们。
35.查找特定文件并删除
查找超过10MB的所有.mp3文件,并使用一个命令删除它们
以上就是35个linux下find命令大全,希望对大家有用,另外,欢迎大家指出错误及补充。
具體的例子:
最近想把程序源码备份一下,但是每个源码目录都有*.o文件或者其他的一些编译产生的文件,不删掉这些文件的话压缩包会比较大,而且压缩时间长,也没有必要备份这些文件,但是一个个目录去删也太搞笑了。
还好find命令有-exec的选项,一旦find命令匹配到了相应的文件,就可以有-exec选项中的命令对其进行操作。
保险起见还是先用ls命令看看匹配的文件是不是都可以删:
find . -name “.o" -exec ls {} ;
删除当前目录下所有的.o文件:
find . -name “.o" -exec rm -f {} ;
可以在删除前给提示,删除则输入y键:
find . -name ".o” -ok rm -f {} ;
不过如果文件多的话就不适合了。
有些类似的例子:
删除更改时间在5日以前的文件:
find . -type f -mtime +5 -exec rm -f {} ;
删除前给提示
find . -type f -mtime +5 -ok rm -f {} ;
除了-exec选项外,还可以用xargs命令:
xargs
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是"参数列太长"或"参数列溢出”。这就是xargs命令的用处所在,特别是与f i n d命令一起使用。Find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
让我们来看看xargs命令是如何同find命令一起使用的,并给出一些例子。
下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件:
下面的例子在整个系统中查找内存信息转储文件(core dump),然后把结果保存到/tmp/core.log 文件中:
$ find . -name “core” -print | xargs echo “” >/tmp/core.log
下面的例子在/apps/audit目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
$ find /apps/audit -perm -7 -print | xargs chmod o-w
在下面的例子中,我们用grep命令在所有的普通文件中搜索device这个词:
$ find / -type f -print | xargs grep “device”
在下面的例子中,我们用grep命令在当前目录下的所有普通文件中搜索DBO这个词:
$ find . -name \ *-type f -print | xargs grep “DBO”
注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义。
小结
find命令是一个非常优秀的工具,它可以按照用户指定的准则来匹配文件。使用exec和
xargs可以使用户对所匹配到的文件执行几乎所有的命令。