上一篇写了为什么要使用xargs命令。 接下来,我们看一些xargs命令用法实例。
目录
一、将xargs与find组合使用
在云计算越来越普及的今天,工程师们有时会发现云主机的磁盘空间被占满耗完了。常见的原因是各种进程产生的日志文件、dump文件过多,这时就需要清理部分占用空间大的无用的文件。我们可以使用如下命令查找文件:
find /var/log -type f -size +9M | xargs ls -lhS
拆解一下就是,查找 /var/log 目录下size超过 9M 的文件再按size进行排序后列出,效果如下:
然后可以按需调整参数,将部分目标文件进行压缩归档或者直接删除。
find /var/log -type f -size +10M -name "*.bak" | xargs rm -f
如果需要在大量指定扩展名的文件中搜索关键字符串,可以组合类似如下命令:
find /path/ -name "*.md" | xargs grep redhat
二、xargs组合使用多个命令
要使用xargs运行多个命令,请使用 -I 选项。语法为:
[cmd-providing-input] | xargs -I $ sh -c "[cmd-1] $; [cmd-2] $"
xargs每次使用标准输入的一行内容替换引号引着的命令中的 $ 符号作为参数。
三、将文件复制到多个目录
使用 xargs 命令将文件复制到多个目录。语法如下:
echo [directory-1] [directory-2] | xargs -n 1 cp -v [filename]
echo 命令提供目标目录名称,xargs使用 cp 命令将给定文件复制到每个目录中。这里xargs的选项参数 -n 1 表示每次使用一项作为后面命令的参数。
另一个小技巧是可以使用xargs删除字符串中多余的空格:
此外,xargs和find都有大量的选项。我们建议您查看他们的手册页以了解更多信息。
参考:
-
man xargs
-
man find
-
https://phoenixnap.com/kb/xargs-command
PS:
本文首发于公众号: 程序熵, 更多有用文章请点击关注 code-shang