返回顶部
首页 > 资讯 > 操作系统 >如何使用linux shell脚本xargs命令
  • 488
分享到

如何使用linux shell脚本xargs命令

2023-06-09 20:06:33 488人浏览 独家记忆
摘要

本篇内容主要讲解“如何使用linux shell脚本xargs命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用linux shell脚本xargs命令”吧!xargs是给命令传递参数的

本篇内容主要讲解“如何使用linux shell脚本xargs命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用linux shell脚本xargs命令”吧!

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,下面是一些如何有效使用xargs 的实用例子。
1. 当你尝试用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题

find ~ -name ‘*.log' -print0 | xargs -0 rm -f

获得/etc/ 下所有*.conf 结尾的文件列表,有几种不同的方法能得到相同的结果,下面的例子仅仅是示范怎么实用xargs ,在这个例子中实用 xargs将find 命令的输出传递给ls -l

# find /etc -name "*.conf" | xargs ls –l

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

# cat url-list.txt | xargs wget –c

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

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

拷贝所有的图片文件到一个外部的硬盘驱动

# ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

EXAMPLES
find /tmp -name core -type f -print | xargs /bin/rm -f
Find files named core in or below the directory /tmp and delete them. Note that this will work incorrectly if there are any filenames containing newlines or spaces.

find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Find files named core in or below the directory /tmp and delete them, processing filenames in such a way that file or directory names containing spaces or newlines are correctly handled.

find /tmp -depth -name core -type f -delete
Find files named core in or below the directory /tmp and delete them, but more efficiently than in the previous example (because we avoid the need to use fork(2) and exec(2) to launch rm and we don't need the extra xargs process).

cut -d: -f1 < /etc/passwd | sort | xargs echo
Generates a compact listing of all the users on the system.

xargs sh -c 'eMacs "$@" < /dev/tty' emacs
Launches the minimum number of copies of Emacs needed, one after the other, to edit the files listed on xargs' standard input. This example achieves the same effect as BSD's -o option, but in a more flexible and portable way.

例如,下面的命令:

代码如下:

rm `find /path -type f`

如果path目录下文件过多就会因为“参数列表过长”而报错无法执行。但改用xargs以后,问题即获解决。

代码如下:

find /path -type f -print0 | xargs -0 rm

本例中xargs将find产生的长串文件列表拆散成多个子串,然后对每个子串调用rm。-print0表示输出以null分隔(-print使用换行);-0表示输入以null分隔。这样要比如下使用find命令效率高的多。

代码如下:

find /path -type f -exec rm '{}' \;

xargs命令应该紧跟在管道操作符之后,它以标准输入作为主要的源数据流,并使用stdin并通过提供命令行参数来执行其他命令,例如:

代码如下:

command | xargs


实例应用1,将多行输入转换为单行输出:

代码如下:

amosli@amosli-pc:~/learn$ cat example.txt
1 2 3 4 5
6 7
8
amosli@amosli-pc:~/learn$ cat example.txt | xargs
1 2 3 4 5 6 7 8

实例应用2,将单行输入转换为多行输出:

代码如下:

amosli@amosli-pc:~/learn$ cat example.txt | xargs -n 2
1 2
3 4
5 6
7 8


空格是默认的定界符,-n 表示每行显示几个参数

还可以使用-d参数来分隔参数,如下:

代码如下:


amosli@amosli-pc:~/learn$ echo "splitXhiXamosliXsplit" | xargs -d "X" -n 1
split
hi
amosli
split

实例应用3,读取stdin,将格式化参数传递给命令

代码如下:

#定义一个echo命令每次在输出参数后都加上#
amosli@amosli-pc:~/learn$ cat cecho.sh
echo $*'#'

#需求1:输出多个参数
amosli@amosli-pc:~/learn$ sh cecho.sh arg1
arg1#
amosli@amosli-pc:~/learn$ sh cecho.sh arg2
arg2#
amosli@amosli-pc:~/learn$ sh cecho.sh arg3
arg3#

#需求2:一次性提供所有的命令参数
amosli@amosli-pc:~/learn$ sh cecho.sh arg1 arg2 arg3
arg1 arg1 arg2 arg3#

#针对需求1、2,使用xargs代替,先用vi建一个新文件args.txt,如下:
amosli@amosli-pc:~/learn$ cat args.txt
arg1
arg2
arg3
#批量输出参数:
amosli@amosli-pc:~/learn$ cat args.txt | xargs -n 1
arg1
arg2
arg3
amosli@amosli-pc:~/learn$ cat args.txt | xargs -n 2 sh cecho.sh
arg1 arg2#
arg3#
#一次性输出所有参数:
amosli@amosli-pc:~/learn$ cat args.txt | xargs sh cecho.sh ;
arg1 arg2 arg3#

需求3,如何将参数嵌入到固定的命令行中?如下所示:

代码如下:

amosli@amosli-pc:~/learn$ sh cecho.sh -p args1 -1
-p args1 -1#
amosli@amosli-pc:~/learn$ sh cecho.sh -p args2 -1
-p args2 -1#
amosli@amosli-pc:~/learn$ sh cecho.sh -p args3 -1
-p args3 -1#

使用xargs的解决方案:

代码如下:

amosli@amosli-pc:~/learn$ cat args.txt | xargs -I {} sh cecho.sh -p {} -1
-p arg1 -1#
-p arg2 -1#
-p arg3 -1#

#-I {}批定了替换字符串,字符串{}会被从stdin读取到的参数所替换,使用-I时,能循环按要求替换相应的参数

实例应用4,结合find使用xargs

前面已经举过例子,这里要注意的是文件名称定界符要以字符null来分隔输出,如下所示,否则可能会误删文件

代码如下:

amosli@amosli-pc:~/learn$ find . -type f -name "*test*.txt" -print0 | xargs -0 rm -f

其他:

代码如下:

cat file | ( while read arg; do cat $arg; done )
cat file | xargs -I {} cat {}

到此,相信大家对“如何使用linux shell脚本xargs命令”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何使用linux shell脚本xargs命令

本文链接: https://lsjlt.com/news/257599.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用linux shell脚本xargs命令
    本篇内容主要讲解“如何使用linux shell脚本xargs命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用linux shell脚本xargs命令”吧!xargs是给命令传递参数的...
    99+
    2023-06-09
  • linux shell脚本学习xargs命令使用详解
    例如,下面的命令: rm `find /path -type f` 如果path目录下文件过多就会因为“参数列表过长”而报错无法执行。但改用xargs以后,问题即获解决。 find /path -type...
    99+
    2022-06-04
    详解 脚本 命令
  • Linux上如何使用xargs命令
    这篇文章给大家分享的是有关Linux上如何使用xargs命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在使用 Linux 时,你是否遇到过需要将一些命令串在一起,但是其中一个命令不接受管道输入的情况呢?在这种...
    99+
    2023-06-28
  • Linux中如何使用xargs命令
    这篇文章主要为大家展示了“Linux中如何使用xargs命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何使用xargs命令”这篇文章吧。Linux常用命令xargs 命令 是给...
    99+
    2023-06-28
  • 如何使用Shell脚本test命令
    这篇文章主要讲解了“如何使用Shell脚本test命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Shell脚本test命令”吧!Shell中的 test 命令用于检查某个条件是否...
    99+
    2023-06-09
  • Linux xargs命令的使用
    1.功能: xargs可以将stdin中以空格或换行符进行分隔的数据,形成以空格分隔的参数(arguments),传递给其他命令。因为以空格作为分隔符,所以有一些文件名或者其他意义的名词内含有空格的时候,xargs可...
    99+
    2022-06-03
    Linux xargs命令 Linux xargs
  • Linux命令中如何使用find和xargs
    本篇文章给大家分享的是有关Linux命令中如何使用find和xargs ,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 使用 find 可以查...
    99+
    2023-06-13
  • linux系统中如何使用xargs命令
    这篇文章主要介绍linux系统中如何使用xargs命令,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具,xargs 可以将管道或标准输入(stdin)数...
    99+
    2023-06-28
  • 如何使用Shell脚本break和continue命令
    本篇内容介绍了“如何使用Shell脚本break和continue命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在循环过程中,有时候需要...
    99+
    2023-06-09
  • SecureCRT如何使用rz命令上传shell脚本
    小编给大家分享一下SecureCRT如何使用rz命令上传shell脚本,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 今天yum install -y lrzsz 用rz上传本机文件,上传shell 脚本后执行脚本报错提示...
    99+
    2023-06-06
  • 如何用PHP执行shell 脚本和 shell命令
    执行 shell 脚本: 或者首先使用 ssh2_connect 函数连接到远程主机,然后使用 ssh2_auth_password 函数进行身份验证。接下来,使用 ssh2_exec 函数执行 shell 脚本,将其输出流作为结果返回。...
    99+
    2023-08-31
    php linux 开发语言 Powered by 金山文档
  • Linux脚本Shell命令有哪些
    这篇文章将为大家详细讲解有关Linux脚本Shell命令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.开头程序必须以下面的行开始(必须方在文件的***行):#!/bin/sh符号#!用来告诉系统...
    99+
    2023-06-17
  • Linux的xargs命令怎么使用
    这篇文章主要介绍“Linux的xargs命令怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux的xargs命令怎么使用”文章能帮助大家解决问题。Linux常用命令xargs是 exec...
    99+
    2023-06-28
  • 如何用shell脚本执行hadoop命令
    要使用shell脚本执行Hadoop命令,可以按照以下步骤操作:1. 创建一个新的文本文件,并使用任何文本编辑器打开它(如vi、na...
    99+
    2023-10-11
    hadoop
  • Shell脚本中的printf命令使用
    上一章节我们学习了 Shell 的 echo 命令,本章节我们来学习 Shell 的另一个输出命令 printf。 printf 命令模仿 C 程序库(library)里的 printf() 程序。 printf 由 P...
    99+
    2023-05-12
    Shell printf命令 Shell printf
  • 如何使用Shell脚本echo指令
    本篇内容主要讲解“如何使用Shell脚本echo指令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Shell脚本echo指令”吧!echo是Shell的一个内部指令,用于在屏幕上打印出指...
    99+
    2023-06-09
  • Linux中xargs命令的使用方法
    这期内容当中小编将会给大家带来有关Linux中xargs命令的使用方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。linux命令可以从两个地方读取要处理的内容,一个是通过命令行参数,一个是标准输入。例如...
    99+
    2023-06-09
  • 怎么在Linux上使用xargs命令
    这篇文章主要介绍怎么在Linux上使用xargs命令,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在使用 Linux 时,你是否遇到过需要将一些命令串在一起,但是其中一个命令不接受管道输入的情况呢在这种情况下,我们就...
    99+
    2023-06-15
  • 如何理解Linux下的Xargs命令
    这期内容当中小编将会给大家带来有关如何理解Linux下的Xargs命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。xargs 常常被大家忽略的一个命令,对它的一些用法很多人可能不熟悉,其实它是一个功能强...
    99+
    2023-06-15
  • shell编程命令xargs该怎么用
    本篇文章为大家展示了shell编程命令xargs该怎么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一,说xargs命令前,说一下什么是shell编程什么是shell编程呢,说白了就是按一定的规则...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作