1.举例
遍历当前目录下所有Makefile文件,找到内容适配CONFIG_SMP的所有Makefile
find -type f -name 'Makefile' | xargs grep "CONFIG_SMP"
2.find命令
3.xargs命令
3.1. 命令由来
xargs (英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。之所以能用到这个命令,主要是由于很多命令不支持管道符号 | 来传递参数,而日常工作中经常有这个必要,所以就有了 xargs 命令,例如:
如果想要通过一条命令,先使用 find 命令获取 /etc 目录下所有的 passwd 文件,最后使用 ls -l 获取文件的详细信息,你可能一开始会使用类似下列格式的命令:
[root@centos ~]# find /etc -name passwd
/etc/pam.d/passwd
/etc/passwd
[root@centos ~]# find /etc -name passwd | ls -l
total 0
可以看到,此时并没有按照我们的期望输出结果,此时使用 xargs
命令可以解决该问题
[root@centos ~]# find /etc -name passwd | xargs ls -l
-rw-r--r--. 1 root root 168 Apr 7 2020 /etc/pam.d/passwd
-rw-r--r-- 1 root root 1541 May 21 11:32 /etc/passwd
实际上,在 Linux 的 Shell 命令中,诸如 mkdir
、 cat
、 rm
等命令都不支持直接将管道符的输出当做输入进而作为他们的操作对象来使用。
3.2.格式
xargs [ option ] ... [ command [ initial-arguments ] ... ]
关于如何阅读 Linux 的 man
手册,请见【Linux入门学习笔记】Linux命令查阅方法及文件操作命令简介。