日期:2014-05-16  浏览次数:20566 次

Linux学习笔记(二)--find命令
在运行一个耗时的find命令时,可以把它放在后台执行.


F i n d命令的一般形式为:

find pathname -options [-print -exec -ok]


pathname   find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

-print   find命令将匹配的文件输出到标准输出。

-exec   find命令对匹配的文件执行该参数所给出的 s h e l l命令。相应命令的形式为 ' command' {} \;,注意{ }和\;之间的空格。

-ok   和- e x e c的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 s h e l l命令,

在执行每一个命令之前,都会给出提示,让用户来确定是否执行。


使用exec来执行shell命令

exec选项后面跟随着所要执行的命令,然后是一对儿 { },一个空格和一个\,最后是一个分号。


find . -name  *.svn -exec rm {}  -rf  \;


find . -type f -name "DbType.java" -exec cat {} \; | wc -l


xargs命令

在使用f i n d命令的- e x e c选项处理匹配到的文件时,f i n d命令将所有匹配到的文件一起传递

给e x e c执行。不幸的是,有些系统对能够传递给 e x e c的命令长度有限制,这样在f i n d命令运行

几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出” 。这就是

xargs命令的用处所在,特别是与 f i n d命令一起使用


find . -name *.xml | xargs ls -ln



按大小查找文件
-size 选项查找满足指定的大小条件的文件。要查找所有大于 5MB 的用户文件,使用


find / -size  +5000000c 2> /dev/null
/var/log/lastlog
/var/log/cups/access_log.4
/var/spool/mail/bluher
结尾的“c”以字节为单位报告我们的结果。默认情况下,find 以 512 字节块的数量报告大小。如果我们将“c”替换为“k”,我们还会看到以千字节的数量报告的结果,如果使用“w”,则会看到以两字节字的数量报告的结果。

-size 选项经常用于搜索所有零字节文件并将它们移至 /tmp/zerobyte 文件夹。以下命令恰好可以完成这一任务:

find test -type f  -size 0 -exec mv {} /tmp/zerobyte \;
-exec 操作允许 find 在它遇到的文件上执行任何 shell 命令。在本文的后面部分,您将看到其用法的更多示例。大括号允许移动每个空文件。

选项 -empty 还可用于查找空文件:

find test -empty???????
test/foo
test/test

一些例子:
查找目录下带有"morgan"字符串的pom.xml文件
find . -name pom.xml -exec grep "morgan" {} \; -print