Linux学习笔记(二)--find命令

本文介绍find命令的各种高级用法,包括如何利用-exec和-ok选项执行shell命令,使用xargs命令解决传递给-exec的命令长度限制问题,以及利用-size选项按文件大小进行查找等。
在运行一个耗时的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值