【视频笔记】每天一个Linux命令-xargs

命令xargs是英语词组extended arguments的缩写,把标准输入转化为参数,
有些命名是不读取标准输入的,如echo命令,echo "hello" |echo 不打印
echo "hello" | xargs echo 打印hello
xargs 默认会跟echo命令,上面等价于echo "hello" | xargs
xargs会按分隔符去拆分参数,默认分隔符是空格,echo "hello world" | xargs echo 实际是一次性传了两个参数给echo,两个参数一次打印出来了
xargs -n 数值,一次性传几个参数
echo "hello world" | xargs -n 1 echo 则一次传递一个参数,会换行打印

[root@localhost ~]# echo "hello world" |xargs echo
hello world
[root@localhost ~]# echo "hello world" |xargs -n 1 echo
hello
world

 xargs -d 符号,指定拆分的分隔符 

#echo会在每一个字符后面去打印一个换行

[root@localhost ~]# echo "hi,job" |xargs -d "," -n 1 echo
hi
job

[root@localhost ~]#    

不要echo打印换行,加一个-n

[root@localhost ~]# echo -n  "hi,job" |xargs -d "," echo
hi job
[root@localhost ~]#

-p参数,交互操作

[root@localhost ~]# echo -n  "hi,job" |xargs -d "," -p  echo 
echo hi job ?...n
[root@localhost ~]# echo -n  "hi,job" |xargs -d "," -p  echo 
echo hi job ?...y
hi job
[root@localhost ~]#

-t参数,先打印执行的命令,再执行

[root@localhost ~]# echo -n  "hi,job" |xargs -d "," -t  echo 
echo hi job 
hi job
[root@localhost ~]# 
[root@localhost ~]# echo -n  "hi,job" |xargs -d "," -t -n 1  echo 
echo hi 
hi
echo job 
job
[root@localhost ~]# 

xargs -I 占位符{}, 它叫initial arguments,然后在需要用到这个值的地方,写上占位符{}

[root@localhost ~]# echo -n  "hi,job" |xargs -I {} echo {}
hi,job

xargs -r参数,它是no run if empty的缩写,没有参数传下来时,就不执行

[root@localhost ~]# echo | xargs -r echo
[root@localhost ~]#

xargs 遇到\或引号时,如果未做转义,则 不会打印该符号

[root@localhost tmp]# cat test1.txt 
aa
bb
cc
\n \t \a
[root@localhost tmp]# cat test1.txt | xargs echo
aa bb cc n t a
[root@localhost tmp]

上面echo会默认把参数按一行来打印,\都没有了

使用单引号,双银行,\转义后,则会保留

[root@localhost tmp]# cat test2.txt 
aa
bb
cc
'\'n "\"t \\a
[root@localhost tmp]# cat test2.txt | xargs echo
aa bb cc \n \t \a
[root@localhost tmp]

通过xargs批量传递参数创建文件(批量创建)

[root@localhost tmp]# cat test2.txt |xargs touch

通过xargs批量传递参数删除文件(批量删除)

[root@localhost tmp]# cat test2.txt |xargs rm

删除前,需要提示,加-p参数

需要一次删除一个,加 -n 1参数

 

参考:每天一个Linux命令-xargs_哔哩哔哩_bilibili

posted @ 2025-05-24 16:11  fanblog  阅读(20)  评论(0)    收藏  举报