Linux中的xargs

Linux中的xargs

xargs将参数作为标准输入传递给指定程序。它的一个应用场景是:一些程序无法从管道中读取输入,比如rmkill等等,在需要使用管道时,可以使用xargs命令。

下面的例子中,ls -l命令并不会理会now.txt,而是直接输出目录中的文件列表:

$ echo 'now.txt' | ls -l
total 2072
-rw-rw-r-- 1 tom tom 2097152 Jun 12 14:43 2M.file
drwxrwxrwx 2 tom tom    4096 May 31 16:42 a
-rwxrwxr-x 1 tom tom      10 Jun 12 14:56 a.txt
drwxrwxrwx 2 tom tom    4096 May 29  2017 bin
drwxrwxrwx 5 tom tom    4096 Jun  5 17:25 homework
drwxrwxrwx 3 tom tom    4096 May 12 10:37 name
-rwxrwxr-x 1 tom tom      14 Jun 12 12:18 now.txt

可以使用xargs处理这个情况,用管道将echo输出传给xargs作为参数,xargs将这些参数作为ls -l的标准输入:

$ echo 'now.txt' | xargs ls -l
-rwxrwxr-x 1 tom tom 14 Jun 12 12:18 now.txt

-i命令选项使xargs具有插入功能,使用{}代表参数的占位符:

$ find -maxdepth 1 -type f '!' -name '.*' | xargs -i mv {} ./backups/{}.bk

这条命令寻找当前目录中所有的普通文件,并将其移动到./backups目录中,每个文件被添加后缀名.bk

使用-t命令选项显示具体执行的命令:

$ echo "now.txt.bk" | xargs -t ls -l
ls -l now.txt.bk
-rwxrwxr-x 1 tom tom 14 Jun 12 12:18 now.txt.bk

在一些情况下,xargs没有从管道中得到内容,但是其之后的命令还是会运行:

$ find ./ -empty
$ find ./ -empty | xargs ls -l
total 2056
-rw-rw-r-- 1 tom tom 2097152 Jun 12 14:43 2M.file.bk
-rwxrwxr-x 1 tom tom      10 Jun 12 14:56 a.txt.bk
-rwxrwxr-x 1 tom tom      14 Jun 12 12:18 now.txt.bk

使用-r命令参数避免这种情况:

$ find ./ -empty | xargs -r ls -l
$

原文发布于微信公众号 - mwangblog(mwangblog)

原文发表时间:2018-06-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏雨过天晴

原 基于Docker搭建Gitlab

5011
来自专栏未闻Code

使用Docker Swarm搭建分布式爬虫集群

在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况。此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运行?代码修改了,于...

2725
来自专栏云计算教程系列

如何在CentOS 7上安装和配置Ghost

Ghost是一个轻量级的开源博客平台,易于使用。Ghost是完全可定制的,有许多主题可用。

2763
来自专栏angularejs学习篇

.net自定义错误页面实现

  在实际的web开发中,经常会遇到以下情况,导致给用不好的体验:     a、程序未处理的异常,直接输出显示到用户页面     b、用户访问的...

1594
来自专栏accesshub

用户远程接入腾讯云VPC

       在管理控制台的部署容器页面,点击复制用户接入容器运行命令,在服务器上粘贴执行

1844
来自专栏从零学习云计算

openshift/origin学习记录(10)——基于已有镜像部署应用

本部分记录如何基于已有的镜像部署应用。参考的博客为《OpenShift_034:部署 mywebsql docker image 访问 mysql 数据库》(...

3550
来自专栏草根专栏

Docker & ASP.NET Core (5):Docker Compose

Compose是一个用来定义和运行多容器Docker应用的工具。使用Compose的时候,你可以使用一个YAML文件来配置你应用的服务。然后根据配置,使用一个命...

1402
来自专栏未闻Code

使用Docker Swarm搭建分布式爬虫集群

在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况。此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运行?代码修改了,于...

2332
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Ghost和Nginx创建博客

Ghost是一个轻量级(~7.5MB)的开源博客平台,非常易于使用。Ghost是完全可定制的。互联网上有很多可供Ghost使用的免费或付费的主题。

1260
来自专栏编程坑太多

跟我一起学docker(五)--仓库

1854

扫码关注云+社区

领取腾讯云代金券