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