前面一篇我们讲到find命令和exec组合的一个高级使用,另外还有命令xargs的一个类似的结合应用。
xargs 是给命令传递参数的一个过滤器,可以将管道或标准输入的数据转换成参数,这意味着通过管道传递给 xargs 的输入将会包含换行.
xargs是构建单行命令的重要组件之一。
find命令可以把匹配到的文件传递给 xargs 命令执行,这时可以使用 xargs 命令。
实际例子1:查找系统中的每一个普通文件,然后使用xargs命令来判断什么类型的文件
$find . -type f -print | xargs file
./IBZKPT: ASCII text
./INCAR: ASCII text
./POSCAR: ASCII text
./POTCAR: ASCII text
./CHGCAR: empty
./OUTCAR: ASCII text
实际例子2:在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限
$find . -perm -7 -print | xargs chmod o-w
实际例子3:用grep命令在所有的普通文件中搜索vasp这个词
$find . -type f -print | xargs grep "vasp"
./OUTCAR: vasp.5.4.4.18Apr17-6-g9f103f2a35 (build Nov 19 2019 09:20:27) complex
./OUTCAR: LCOMPAT= F compatible to vasp.4.4
./OUTCAR: GGA_COMPAT = T GGA compatible to vasp.4.4-vasp.4.6
实际例子4:使用xargs执行mv
$find . -name "*.log" | xargs -i mv {} vasp4
结论:find命令是一个非常优秀的工具,它可以按照用户指定的准则来匹配文件。使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。