首页 > 其他分享 >xargs

xargs

时间:2024-01-13 16:22:42浏览次数:30  
标签:xargs yechangyao bak txt root find

xargs

给其他命令传递参数的一个过滤器,又称管道命令,构造参数等。是给命令传递参数的一个过滤器,也是组合多个命令的一个工具 它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理 。简单的说 就是把其他命令的给它的数据,传递给它后面的命令作为参数

选项

-d 为输入指定一个定制的分割符
-i 用 {} 代替 传递的数据
-I string 用string来代替传递的数据-n[数字] 设置每次传递几行数据
-n 选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-P n 允许的最大线程数量为n
-s[大小] 设置传递参数的最大字节数(小于131072字节)
-x 大于 -s 设置的最大长度结束 xargs命令执行

案例

[root@localhost ~]# ls |grep .php |xargs -i mv {} {}.bak     #将当前目录下php文件,改名字
[root@localhost ~]# ls |grep .php |xargs -I {} mv {} {}.bak   #与上例相同
[root@localhost ~]# find ./ -name "*.tmp" | xargs -i rm -rf {}  #删除当前文件夹下的,tmp文件

---xargs -i 选项用法 {}代表的管道符前面传递的结果
[root@localhost130 yechangyao]# cp ./ttxt.txt{,.bak}
[root@localhost130 yechangyao]# ls
Centos-7.repo  cout_test.txt  Documents  epel-7.repo  hello.sh  news.txt  Public     test001.tar     test1108.txt  test3       test.txt      ttxt.txt      Videos
core.10299     Desktop        Downloads  expr.sh      Music     Pictures  Templates  test002.tar.gz  test2         testFor.sh  text1108.txt  ttxt.txt.bak  yechangyao
[root@localhost130 yechangyao]# find . -type f -name '*.bak'
./.cache/imsettings/log.bak
./yechangyao/1.log.bak
./ttxt.txt.bak
[root@localhost130 yechangyao]# find . -type f -name 'tt*.bak'
./ttxt.txt.bak
[root@localhost130 yechangyao]# find . -type f -name 'tt*.bak' | xargs -i rm -rf {}
[root@localhost130 yechangyao]# ls
Centos-7.repo  cout_test.txt  Documents  epel-7.repo  hello.sh  news.txt  Public     test001.tar     test1108.txt  test3       test.txt      ttxt.txt  yechangyao
core.10299     Desktop        Downloads  expr.sh      Music     Pictures  Templates  test002.tar.gz  test2         testFor.sh  text1108.txt  Videos
[root@localhost130 yechangyao]# 

结合 find 命令使用

xargs 结合 find 使用

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

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

xargs -0 将 \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

⚠️补充

与find结合使用效果和find选项(-exec和-ok)一样

-exec find命令对匹配的文件执行该参数所给出的其他linux命令。相应命令的形式为' 命令 - and' {} ;,注意{ }和\;之间的空格。
-ok 和- exec的作用相同,只不过和会人交互而已,OK执行前会向你确认是不是要执行。

找出自己家目录下所有的.txt文件并删除

find $HOME/. -name "*.txt" -ok rm {} \;

上例中, -ok 和 -exec 行为一样,不过它会给出提示,是否执行相应的操作。

查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中

find . -type f -name "*.txt" -exec cat {} \;> /all.txt

标签:xargs,yechangyao,bak,txt,root,find
From: https://www.cnblogs.com/yechangyao/p/17962494

相关文章

  • linux系统命令技巧ps -ef | grep main | grep -v grep | awk '{print $2}' | xargs --
    说明这个命令ps-ef|grepmain|grep-vgrep|awk'{print$2}'获取的结果为空,填入xargs参数的值也为空,因此报错。我们可以在ps-ef|grepmain|grep-vgrep|awk'{print$2}'|xargskill-9的基础上,加上xargs的参数:--no-run-if-empty,意思就是如果前半部分的命令......
  • 【xargs】关于 xargs 的使用
    xargs参数使用(1)使用xargs执行指令:有一个info.log文件catinfo.logabc使用一下xargs,这样看起来意义不大catinfo.log|xargsechoabc可以换一个场景,在某个文件夹下,找到指定文件名的文件,然后删除它find./test/|grep-v不能删|xargsrmfind./test......
  • xargs cp 批量操作
    [root@localhost2023]#find /data/tools/minio/data/blog/2023/  -name "*.png"|xargs-I{}cp{} /data/minio/data/blog/20231201/[root@localhost30]#find/data/tools/minio/data/blog/2023/-name"*.jpeg"|xargs-I{}cp{}/data/mi......
  • 如何使用 Linux xargs 命令
    一、xargs命令是什么?该xargs命令构建并执行通过标准输入提供的命令。它接受输入并将其转换为另一个命令的命令参数。此功能在文件管理中特别有用,可与rm、cp、mkdir和其他类似命令结合使用。  二、使用xargs命令示例单独使用时,xargs提示用户输入文本字符串,然后将其传递......
  • Linux命令(89)之xargs
    linux命令之xargs1.xargs介绍linux命令xargs是从标准输入(管道或stdin、输入重定向)获取数据,并将数据转换成命令行的参数简单理解就是find管道|后面接文件,就需要xargs。假如|前面输入的是文字、字符串就不需要接xargs2.xargs用法xargs[参数]xargs常用参数参数说明-n数字分组......
  • xargs参数
    功能:将标准输入分割后转化为命令参数。例子:echo"*.py"|xargsfind./-name,查找当前目录下的所有py文件。-d制定分隔符默认情况下,xargs将空格和换行符作为分隔符,xargs-d"\t"command指定\t为分隔符-p-t-p在执行命令前会打印命令并确认,-t只会打印命令,不用确认。-0与fi......
  • Linux中xargs命令学习
    转自:https://zhuanlan.zhihu.com/p/340804463?utm_id=0,提到了许多参数,用到时可以参考1.介绍 cat/etc/passwd|greproot   等同于  echo"helloworld"|echo管道命令|,将左侧命令(cat/etc/passwd)的标准输出转换为标准输入,提供给右侧命令(greproot)作为参数。但有些命......
  • xargs
    xargs给其他命令传递参数的一个过滤器补充说明xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格......
  • Linux批量文件操作——基于find-xargs
    前言在项目初创阶段,经常会遇到各种文件操作,拷贝头文件,库,批量重命名等。文件结构一复杂,这就将是个无聊的工作。查找文件find可以在目录结构中搜索文件,这是它在man里面的作用描述。那么怎么搜索呢?有多种方式,按文件时间,大小,按文件名,路径名,按文件类型,权限,按用户。而这些方式又可以......
  • 重定向 >,管道 |,管道重定向 tee ,顺序传参 xargs
    判断依据:正确输出返回值为0,错误输出返回值不为0 1.重定向:> 重定向一般是将输出重定向到文本 将错误重定向到正确重定向:2>&1包括:(正确)覆盖重定向>  (正确)追加重定向>>  错误覆盖重定向2> 错误追加重定向2>>  全部覆盖重定向:&>  全部追......