首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux之xargs使用技巧

linux之xargs使用技巧

原创
作者头像
入门笔记
发布2022-05-26 14:28:50
发布2022-05-26 14:28:50
1K0
举报
文章被收录于专栏:入门小站入门小站
image-20210603130606567
image-20210603130606567

Unix命令都带有参数,有些命令可以接受”标准输入(stdin)”作为参数。而管道命令(|)的作用,是将左侧命令的标准输出转换为标准输入,提供给右侧命令作为参数使用。虽然,在 Unix 系统中大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。比如,我们日常使用的 echo 命令就不接受管道传参。而 xargs 命令的作用,就是将标准输入转为命令行参数。

xargs基本用法

代码语言:txt
复制
# grep命令接受管道传参
> cat /etc/passwd | grep root

# echo命令不接受管道传参
> echo "hello rumenz" | echo

# 将标准输入转为命令行参数
> echo "hello rumenz" | xargs echo
hello rumenz

需要注意的是 xargs 后面的默认跟的是 echo 命令,所以它可以单独使用。

-d指定分隔符,默认使用空格分割

代码语言:txt
复制
# 空格作为分隔符
$ echo "one two three" | xargs mkdir

# 指定制表符\t作为分隔符
$ echo -e "a\tb\tc" | xargs -d "\t" echo
a b c

-p 打印出要执行的命令并询问用户是否要执行

代码语言:txt
复制
> echo 'one two three' | xargs -p touch
touch one tow three ?...y

-0 表示用 null 当作分隔符

find命令有一个特别的参数-print0,用来指定输出的文件列表以null作为分隔符

代码语言:txt
复制
> find /path -type f -print0 | xargs -0 rm

指定多少行作为一个命令行参数

代码语言:txt
复制
> xargs -L 1 find -name
"*.txt"
./1.txt
./rumenz.txt
./2.txt
./3.txt

-n指定每次将多少项作为命令行参数

代码语言:txt
复制
> echo {0..9} | xargs -n 2  echo 

指定每一项命令行参数的替代字符串

代码语言:txt
复制
# 将命令行参数传给多个命令
> cat foo.txt
one
two
three

> cat foo.txt | xargs -I {} sh -c 'echo {}; mkdir {}'
one
two
three

> ls
one two three

将多行输入转换成单行输入

代码语言:txt
复制
> cat rumenz.txt
1 2 3 4
5 6
7 8 9
> cat rumenz.txt | xargs
1 2 3 4 5 6 7 8 9

将单行文本转换成多行

代码语言:txt
复制
> cat rumenz.txt
1 2 3 4 5 6 7 8 9
> cat rumenz.txt | xargs -n 3
1 2 3
4 5 6
7 8 9

指定分隔符进行行转换

代码语言:txt
复制
> echo "rumenz:123:rumenz:456:rumenz:789" | xargs -d : -n 2
rumenz 123
rumenz 456
rumenz 789

xargs和find结合

代码语言:txt
复制
> find . -type f -name "*.txt" -print | xargs rm -f

批量下载文件

代码语言:txt
复制
> cat rumenz.txt | xargs wget -c

原文链接:https://rumenz.com/rumenbiji/linux-xargs-skills.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • xargs基本用法
  • 需要注意的是 xargs 后面的默认跟的是 echo 命令,所以它可以单独使用。
  • -d指定分隔符,默认使用空格分割
  • -p 打印出要执行的命令并询问用户是否要执行
  • -0 表示用 null 当作分隔符
  • 指定多少行作为一个命令行参数
  • -n指定每次将多少项作为命令行参数
  • 指定每一项命令行参数的替代字符串
  • 将多行输入转换成单行输入
  • 将单行文本转换成多行
  • 指定分隔符进行行转换
  • xargs和find结合
  • 批量下载文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档