您的位置:首页 > 其它

关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别

2016-10-02 13:27 387 查看

前言:find命令一直都是系统管理员的常用命令之一, 其参数中“-exec”尤其实用。而命令“xargs”也是类似find中的“-exec”参数,也被广泛使用着。

本文着重讲解的是利用 find 或 xargs 命令,将当前“标准输出”(数据流)作为另一个命令的“标准输入”





一夫当关,“find”命令


find   .  或 find  ~




这是最基本的使用find的方法。具体功能是列出/root目录下的所有文件。

注:这里仅仅是举例(未必定是/root目录),这条命令也可以配合“|grep”

1/4:-name 参数


find /tmp/linuxcn -iname ‘*.a’





2/4:-type 参数


find /tmp -name itxdm.me -type f





类型参数列表: f 普通文件 l 符号连接 d 目录 c 字符设备 b 块设备 s 套接字 p Fifo

3/4:-size 参数


find . -type f -size 10M





文件大小单元:b —— 块(512字节) c —— 字节 w —— 字(2字节) k —— 千字节 M —— 兆字节 G —— 吉字节

4/4:-exec 参数


find -type f -size 10M -exec ls -l {} ;





5/5:Other 参数



当然我们find的参数还有很多比如:-perm可以选择权限,-user可是选择用户,-group可以选择用户组等 。

万夫莫开,”xargs”命令

xargs可以将标准输出(数据流)转换成命令参数作为标准输入。更多查看:https://zh.wikipedia.org/wiki/Xargs



这里演示了一下关于 xargs 的基础功能。即,将标准输入的内容(通过 xargs )进行横排输出

1/3:简单 echo



注意: xargs 命令的 echo 指令可忽略(默认)。

2/3:删除例子



可以看到我使用了 -exec -ok 进行了查询和删除操作,前者( -exec )比较危险( 无操作提醒 )。

注意:使用 xargs 进行操作时,系统也是没有提醒的,且需要|(管道符)作为标准输出的导向。

3/3:定义界定符



同样,我用xargs也完成了删除操作。相对于使用-exec(find)删除操作,更加的易与理解并且指令简便。

关于这篇文章:

1。关于定义界定符(-I),有一点很多文章都没有强调。


在使用 xargs 命令时并不是一定要使用 “{}” 方括号的,可能是因为 find 命令的( -exec )默认是 “{}” (为了统一),所以你用其他的定义符都是可以的,甚至你都可以用英文,数学等作为定义界定符。


2。如果你仔细看的话,应该有发现。在执行 find 命令的时,我有时候没有打目录位置。


原因是" find 中 并不是必须的。

如果你需要查找的位置就在当前(目录),那么系统默认就是" find . "


3。关于 xargs,功能就是这篇文章所写所说。但是熟练使用,会发现各种奇葩的运用方法。

比如说,你在(渗透测试)文本文档中有很多URL地址需要下载。那么运用xargs,可以使用这样下载:


cat url.txt | xargs wget -c


再比如说,你在卸载RPM的PHP包时,需要卸载所有包。那么运用xargs,可以使用这样卸载:


rpm -qa |grep php | xargs rpm -e


再比如你的~(相信你也一定有自己运用 xargs 的想法)

4。find命令中的 -exec 与 xargs 命令的区别,我认为俩者的优缺点在三个方面。


-exec仅仅是一个参数,而 xargs 是一个成为男人的命令( man 可寻 )



-exec操作时复杂(容易出错)xargs操作时相对简便了很多。



-exec仅仅能使用在find命令中,而 xargs 独立命令可以用在很多地方。


另外关于查找:我们还有更多的选择。CentOS下的mlocate就很棒,updatedb、localte xxx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: