xargs命令

archoncap archoncap     2022-08-16     340

关键词:

xargs命令

常用工具命令

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。

xargs命令用法

xargs用作替换工具,读取输入数据重新格式化后输出。

定义一个测试文件,内有多行文本数据:

cat test.txt



a b c d e f g

h i j k l m n

o p q

r s t

u v w x y z

多行输入单行输出:

cat test.txt | xargsa b c d e f g h i j k l m n o p q r s t u v w x y z

-n选项多行输出:

cat test.txt | xargs -n3a b c

d e f

g h i

j k l

m n o

p q r

s t u

v w x

y z

-d选项可以自定义一个定界符:

echo "nameXnameXnameXname" | xargs -dX



name name name name

结合-n选项使用:

echo "nameXnameXnameXname" | xargs -dX -n2



name name

name name

读取stdin,将格式化后的参数传递给命令

假设一个命令为 sk.sh 和一个保存参数的文件arg.txt:

#!/bin/bash

#sk.sh命令内容,打印出所有参数。echo $*

arg.txt文件内容:

cat arg.txt



aaa

bbb

ccc

xargs的一个选项-I,使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次:

cat arg.txt | xargs -I {} ./sk.sh -p {} -l



-p aaa -l

-p bbb -l

-p ccc -l

复制所有图片文件到 /data/images 目录下:

ls *.jpg | xargs -n1 -I cp {} /data/images

xargs结合find使用

rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用xargs去避免这个问题:

find . -type f -name "*.log" -print0 | xargs -0 rm -f

xargs -0将作为定界符。

统计一个源代码目录中所有php文件的行数:

find . -type f -name "*.php" -print0 | xargs -0 wc -l

查找所有的jpg 文件,并且压缩它们:

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

xargs其他应用

假如你有一个文件包含了很多你希望下载的URL,你能够使用xargs下载所有链接:

cat url-list.txt | xargs wget -c

子Shell(Subshells)

运行一个shell脚本时会启动另一个命令解释器.,就好像你的命令是在命令行提示下被解释的一样,类似于批处理文件里的一系列命令。每个shell脚本有效地运行在父shell(parent shell)的一个子进程里。这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程。

cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5

如果cmd2 是cd /,那么就会改变子Shell的工作目录,这种改变只是局限于子shell内部,cmd5则完全不知道工作目录发生的变化。子shell是嵌在圆括号()内部的命令序列,子Shell内部定义的变量为局部变量。

子shell可用于为一组命令设定临时的环境变量:

COMMAND1

COMMAND2

COMMAND3(IFS=:

PATH=/binunset TERMINFOset -C

shift 5

COMMAND4

COMMAND5exit 3 # 只是从子shell退出。)# 父shell不受影响,变量值没有更改。COMMAND6

COMMAND7

最近更新的命令

 

相关命令

xargs命令用法

xargs命令:xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输... 查看详情

使用 xargs 运行多个命令

】使用xargs运行多个命令【英文标题】:Runningmultiplecommandswithxargs【发布时间】:2011-10-2023:35:22【问题描述】:cata.txt|xargs-I%echo%在上面的示例中,xargs将echo%作为命令参数。但在某些情况下,我需要多个命令来处理参数而不是一个... 查看详情

xargs---组合命令的工具(代码片段)

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其... 查看详情

xargs命令初了解

想检查下系统里用户的计划任务,百度了下,发现有个脚本命令对其中的xargs有点不台清楚,了解了下大概释义如下:xargs一般和管理配合使用,将前面管道结果分割成xargs后面所接命令的参数 查看详情

xargs命令教程

http://www.ruanyifeng.com/blog/2019/08/xargs-tutorial.html?utm_source=tuicool&utm_medium=referral 查看详情

xargs命令教程(代码片段)

xargs是Unix系统的一个很有用的命令,但是常常被忽视,很多人不了解它的用法。本文介绍如何使用这个命令。一、标准输入与管道命令Unix命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数。$cat/etc/passwd|greproot上面... 查看详情

[转]xargs命令详解,xargs与管道的区别

...为什么要用xargs,问题的来源在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xa 查看详情

xargs

...为主要的数据源例如:ls*.c|xargsgrepmainxargs默认会执行echo命令1.将多行输入转换成单行输出catexample.txt|xargs2.将单行输入转换成多行输出catexample.txt|xargs-n3xargs工作原理:xargs命令接受来自stdin的输入,将数据解析成单个元素,然后调... 查看详情

一天一命令-xargs

一天一命令-xargsxargs传递标准输入作为下一个命令的参数或者重新格式化并输出xargs默认命令是echo,默认分隔符是空格。xargs可以将输入文本转换为单行或多行显示,即指定每行显示的个数。Usage: xargs [OPTION]... COMMAND&nb... 查看详情

xargs用法

...m.blog.csdn.net/article/details?id=44875865 为啥要xargs?通常linux命令可以用|首尾相连,上一个命令的stdout连接到下一个命令的stdin。但是有些命令,比如ls、rm等,是从命令行参数接受输入的。这时候如果想把上一个命令的输出传给它... 查看详情

xargs

Xargs用法详解1.简介:  xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能... 查看详情

linuxxargs命令(代码片段)

xargs是一个强有力的命令,是自动化必须掌握的命令xargs通awk命令一样Linuxxargs命令xargs(英文全拼:eXtendedARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs可以将管道或标准输入(stdin)数据转换成... 查看详情

xargs

变量置换,主要用于不支持管道的shell命令,如:rm、sed等。比如:删除文件- ls|xargs-irm-rf{}文件改名- ls|xargs-imv{}{}.old将命令逐个替换到{}执行命令:xargs当find产生一个文件列表时,该列表提供给另一个命令有时是很有用的.$f... 查看详情

linux命令--xargs(将命令的结果作为参数)(代码片段)

原文网址:Linux命令--xargs(将命令的结果作为参数)_IT利刃出鞘的博客-CSDN博客简介    本文介绍Linux的xargs命令的用法。xargs的作用概述        xargs是给命令传递参数的一个过滤器,也是组合多个命令的工具。     ... 查看详情

find与xargs配合使用(代码片段)

在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太... 查看详情

xargs-r

-r no-run-if-empty  xargs大多数Linux命令都会产生输出:文件列表、字符串列表等。但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file命令显示文件类型(可执行文件、ascii文本等);你能处理... 查看详情

让 xargs 对每一行输入执行一次命令

】让xargs对每一行输入执行一次命令【英文标题】:Makexargsexecutethecommandonceforeachlineofinput【发布时间】:2010-09-1623:44:24【问题描述】:如何让xargs对给定的每一行输入只执行一次命令?它的默认行为是将行分块并执行一次命令,... 查看详情

xargs详细

... http://czmmiao.iteye.com/blog/1949225简介之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:这个命令是错误的find/sbin-perm+700|ls-l这样才是正确的find/sbin-pe... 查看详情