-ls /source/recommend/at_access | awk -F "/" '{print $NF}' | grep -v $(date +%Y%m%d) | grep -v F | xargs -ls /source/recommend/at_access | awk -F "/" '{print $NF}' | grep -v $(date +%Y%m%d) | grep -v F | xargs
作用 xargs,是execute arguments的缩写,它的作用是从标准输入中读取内容,并将 此内容传递给它要协助的命令,并作为那个命令的参数来执行。 mkdir # mkdir one two three 分隔符 xargs会将前一个命令的标准输出转换成命令参数,但很多人可能不知道的是,xargs的标准输入中出现的“换行符、空格、制表符”都将被空格取代 xargs默认的分隔符是空格 还可以使用-d选项来指定任何一个符号作为分隔符 find and xargs find . -name '*.log' -print0 | xargs -0 rm -f xargs提供了-0选项,允许将NULL作为分隔符,而find命令也心有灵犀地提供了对应的选项来产生以NULL字符作为分隔符的输出 xargs的-0选项不仅可以将分隔符从默认的空格变成NULL,还会将单引号、双引号、反斜线等统统默认为是普通字符。
-name “*.cs” | xargs wc -l“, 但是对xargs在这里的作用有点不了解, 因为网上资料主要都在说 xargs的如下作用: 1. 根据man手册, xargs的作用是 “xargs从stdin读入每一条, 并且以空白字元或断行字元作为分辨, 将stdin的条目分隔成为 arguments. 可以看到不加xargs时, 只会将find的结果打印出来. 加上xargs, 会将find找到的cs文件的内容显示出来. 结论 find, xargs和wc联合使用, 查找代码行数的思路如下: find: 负责找到所有符合要求的cs文件路径. xargs: 将cs文件路径以命令参数的形式传给wc. 这里有个对xargs使用介绍的文章, 很赞.
二、xargs 命令的作用 xargs命令的作用,是将标准输入转为命令行参数。 xargs命令的格式如下。 $ xargs [-options] [command] 真正执行的命令,紧跟在xargs后面,接受xargs传来的参数。 xargs的作用在于,大多数命令(比如rm、mkdir、ls)与管道一起使用时,都需要xargs将标准输入转为命令行参数。 三、xargs 的单独使用 xargs后面的命令默认是echo。 $ xargs # 等同于 $ xargs echo 大多数时候,xargs命令都是跟管道一起使用的。但是,它也可以单独使用。 $ xargs hello (Ctrl + d) hello 再看一个例子。 $ xargs find -name "*.txt" ./foo.txt .
xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。 xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,下面是一些如何有效使用xargs 的实用例子。 1. 用xargs 去避免这个问题 find ~ -name ‘*.log’ -print0 | xargs -0 rm -f 2. 获得/etc/ 下所有*.conf 结尾的文件列表,有几种不同的方法能得到相同的结果,下面的例子仅仅是示范怎么实用xargs ,在这个例子中实用 xargs将find 命令的输出传递给ls -l # find 假如你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接 # cat url-list.txt | xargs wget –c 4.
xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。 xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。 find /sbin -perm +700 |xargs ls -l #这样才是正确的xargs 一般是和管道一起使用。 -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。 与 xargs 结合使用,每一个参数命令都会被执行一次:# cat arg.txt | xargs -I {} .
本文节选自《Netkiller Shell 手札》 3.12. standard input/output 3.12.1. xargs - build and execute command lines from standard input xargs命令用法 3.12.1.1. 格式化 xargs用作替换工具,读取输入数据重新格式化后输出。 xargs的一个选项-I,使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次: # echo "name=Neo|age= 30|sex=T|birthday=1980" | xargs -d"|" -n1 | xargs -I {} echo "select * from tab where {} " select * from
这就是xargs命令的用处所在,特别是与find命令一起使用。 find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。 -name *.txt | xargs echo > /tmp/a.log xargs只是简单地把\n变成空格,那么可能存在一些问题。比如文件名带空格,这时候xargs就有问题了。 -name *.txt | xargs -I [] cp -rf [] /tmp -p参数提示是否执行 > find . -name *.log | xargs -p -i mv {} /tmp -p参数会提示让你确认是否执行后面的命令,y执行,n不执行。 原文链接:https://rumenz.com/rumenbiji/linux-find-xargs.html
这就是xargs命令的用处所在,特别是与find命令一起使用。 find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。 -perm 777 | xargs ls -al 查询当前目录下所有的.txt文件,并输出到指定文件a.log(没有换行) > find . -name *.txt | xargs echo > /tmp/a.log xargs只是简单地把\n变成空格,那么可能存在一些问题。比如文件名带空格,这时候xargs就有问题了。 -name *.txt | xargs -I [] cp -rf [] /tmp -p参数提示是否执行 > find . -name *.log | xargs -p -i mv {} /tmp -p参数会提示让你确认是否执行后面的命令,y执行,n不执行。
这就是xargs命令的用处所在,特别是与find命令一起使用。 find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。 -name *.txt | xargs echo > /tmp/a.log xargs只是简单地把\n变成空格,那么可能存在一些问题。比如文件名带空格,这时候xargs就有问题了。 -name *.txt | xargs -I [] cp -rf [] /tmp -p参数提示是否执行 > find . -name *.log | xargs -p -i mv {} /tmp -p参数会提示让你确认是否执行后面的命令,y执行,n不执行。 原文链接:https://rumenz.com/rumenbiji/linux-find-xargs.html 微信公众号:入门小站
这就是xargs命令的用处所在,特别是与find命令一起使用。 find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。 -name *.txt | xargs echo > /tmp/a.log xargs只是简单地把\n变成空格,那么可能存在一些问题。比如文件名带空格,这时候xargs就有问题了。 -name *.txt | xargs -I [] cp -rf [] /tmp -p参数提示是否执行 > find . -name *.log | xargs -p -i mv {} /tmp -p参数会提示让你确认是否执行后面的命令,y执行,n不执行。 原文链接:https://rumenz.com/rumenbiji/linux-find-xargs.html
做过很多遍了,每次还是得现查,记一下: echo "'param 1' 'param 2'" | xargs -n1 | xargs -I@ echo \[@\] \[@\] output: 1 2 [ param 1] [param 1] [param 2] [param 2] xargs里面替换字符串 ls|xargs -I @ echo "mv @ @.pack"|sed 's/.json.pack.pack
,也可以将单行或多行文本输入转换为其他格式,例如多行变单行以及单行变多行; xargs的默认命令是echo,空格是默认定界符 意味着通过管道 | 传递给xargs的输入将会包含换行和空白,不过通过xargs -I于xargs #示例4. 用xargs去避免这个问题: find . -type f -name "*.log" -print0 | xargs -n1 --null #换行或者空格分割以-n1有关系 # . | xargs wget -c #假如你有一个文件包含了很多你希望下载的URL,你能够使用xargs下载所有链接 ? WeiyiGeek.xargs使用 0x01 进阶使用 示例1.xargs替换字符串来更改ip文本: #!
关于shell编程,说到底除了要掌握一些shell的编程套路外,本身对unix的命令掌握程度是关键,其中最常见的,要数sed,awk等文件操作,这些文件处理命令很丰富,网上内容很多,今天我详细说的是xargs -name "*.c" | xargs grep abc 下面请看带参数使用的xargs -i,{}表示对拆分模块的位置指定 # 查找和端口22202相关的进程号,并杀死它们,aix,linux上netstat -name "*.c" | xargs -i wc -l {} | awk '{sum+=$1}END{print sum}' # 文件utf-8转gbk编码格式 find . -name "*.c" | xargs -i iconv -f UTF-8 -t GBK {} -o {}.tmp find . -name "*.c" | xargs -i mv -f {}.tmp {} 还有在一些sed不支持在原文件修改的*nix系统,也可以完成类似的功能,而不用写脚本。
Linux中的xargs xargs将参数作为标准输入传递给指定程序。它的一个应用场景是:一些程序无法从管道中读取输入,比如rm、kill等等,在需要使用管道时,可以使用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。 12 12:18 now.txt.bk 在一些情况下,xargs没有从管道中得到内容,但是其之后的命令还是会运行: $ find ./ -empty $ find ./ -empty | xargs ls
xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs的默认命令是echo,空格是默认定界符。 这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。 xargs是构建单行命令的重要组件之一。 }, 这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次: [root@entel2 test]# cat args.txt | xargs -I {} . 用xargs去避免这个问题: find . -type f -name "*.log" -print0 | xargs -0 rm -f xargs -0将\0作为定界符。 -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz xargs其他应用 假如你有一个文件包含了很多你希望下载的URL,你能够使用xargs
代码示例 下面举一些 xargs 命令的具体例子,方便大家了解其使用的方式: 示例1:删除多个文件 你可以使用 find 命令找到需要删除的文件列表,并通过管道传递给 xargs 命令来执行删除操作 例如,删除 /tmp 目录下所有扩展名为 .txt 的文件: find /tmp -name "*.txt" | xargs rm 示例2:将多个文件传递给其他命令 你可以使用 xargs 命令将多个文件传递给其他命令 执行以下命令: ls | xargs du -sh 这将输出当前目录下的所有文件的大小,并输出一个总计。 示例3:更改多个文件的权限 你可以使用 xargs 命令执行多个文件的权限更改操作。 例如,将当前目录下的所有 .sh 文件的文件权限更改为可执行: ls *.sh | xargs chmod +x 示例4:将多条命令传递给 xargs 你可以在 xargs 命令中传递多条命令,并在传递文件列表时 xargs 命令的使用示例。
01 — xargs命令 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。 它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。 xargs命令的用法 xargs用作替换工具,读取输入数据重新格式化后输出。 例子:定义一个测试文件,包含多行文本数据: touch test.txt 然后输入: ? cat test.txt | xargs ? -n 可以选择多行输出 cat test.txt | xargs -n3 每一行输出三个 ?
xargs可以将输入内容(通常通过命令行管道传递),转成后续命令的参数,通常用途有: 命令组合:尤其是一些命令不支持管道输入,比如ls。 避免参数过长:xargs可以通过-nx来将参数分组,避免参数过长。 使用语法如下 Usage: xargs [OPTION]... COMMAND INITIAL-ARGS... 通过管道,将a.js b.js c.js作为xargs的输入参数。 xargs命令收到输入参数后,对参数进行解析,以空格/换行作为分隔符,拆分成多个参数,这里变成a.js、b.js、c.js。 c.js.backup 例子:参数分组 命令行对参数最大长度有限制,xargs通过-nx对参数进行分组来解决这个问题。 -mtime +7 | xargs -I '{}' mv {} /tmp/otc-svr-logs/
而 xargs 命令的作用,就是将标准输入转为命令行参数。 # 将标准输入转为命令行参数 > echo "hello rumenz" | xargs echo hello rumenz 需要注意的是 xargs 后面的默认跟的是 echo 命令,所以它可以单独使用 xargs -d "\t" echo a b c -p 打印出要执行的命令并询问用户是否要执行 > echo 'one two three' | xargs -p touch touch one tow xargs和find结合 > find . -type f -name "*.txt" -print | xargs rm -f 批量下载文件 > cat rumenz.txt | xargs wget -c 原文链接:https://rumenz.com