`

xargs学习

F# 
阅读更多
在使用find命令的- exec选项处理匹配到的文件时, f i nd命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在f i nd命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与f i nd命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像- exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用- exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

来看看xargs命令是如何同find命令一起使用的,并给出一些例子。

下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件

#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory: ISO-8859 text
......

在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:

$ find / -name "core" -print | xargs echo "" >/tmp/core.log

上面这个执行太慢,我改成在当前目录下查找

#find . -name "file*" -print | xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6

在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:

# ls -l
drwxrwxrwx 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxrwx 2 sam adm 0 10月 31 01:01 httpd.conf

# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x 2 sam adm 4096 10月 30 20:14 file6
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 http3.conf
-rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf

用g r e p命令在所有的普通文件中搜索hostname这个词:

# find . -type f -print | xargs grep "hostname"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

用g r e p命令在当前目录下的所有普通文件中搜索hostnames这个词:

# find . -name * -type f -print | xargs grep "hostnames"
./httpd1.conf:# different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

注意,在上面的例子中, 用来取消find命令中的*在s h e l l中的特殊含义。
删除数量比较多的文件
ls | xargs -n 20 rm -fr
ls当然是输出所有的文件名(用空格分割)
xargs就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数
也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了
分享到:
评论

相关推荐

    linux shell脚本学习xargs命令使用详解

    在Linux Shell脚本中,`xargs`命令是一个非常实用的工具,它允许我们将大量的数据转换为可管理的小块,然后作为参数传递给其他命令,这样可以有效地处理大数量的输入数据,避免因参数列表过长导致的错误。`xargs`...

    find&grep;学习参考

    在Linux系统中,`find`和`grep`是两个非常重要的命令行工具,它们在日常的文件管理和文本处理中起到至关重要的作用。`find`主要用于在文件系统中搜索符合特定...学习和熟悉这些基础命令,是每个Linux用户的必备技能。

    在Linux上使用xargs命令的详细教程

    在Linux系统中,xargs命令是一个非常实用的工具,它能够将一个命令的输出作为参数传递给另一个命令。这个命令的使用通常涉及到Linux命令行的输入/输出...学习和掌握xargs的用法,对于提升Linux系统的使用技能至关重要。

    Linux基础之xargs命令的入门实例

    你是否遇到过这样的情况,需要一遍又一遍地对多个文件执行同样的操作?如果有那你肯定会深有感触这是多么的无聊和效率低下。...本文介绍了Linux基础学习之xargs命令入门的相关资料,需要的朋友可以参考下。

    Linux操作命令五.doc

    Linux 操作命令五 ...通过这次实验,我们不仅学习了 find 和 xargs 命令,还加深了对之前所学到的命令的体会与理解。并且,我们还学习了如何将之前所学到的命令组合使用,以实现更加复杂的文件操作任务。

    如何学习linux的建议.docx

    例如,`find`命令结合`exec`、`xargs`和`grep`,能够执行复杂的文件查找和处理任务,这是图形界面工具难以比拟的。 第三,选择一本高质量的Linux教程书籍。好的教材能够提供准确的信息和清晰的解释,避免误导。确保...

    Linux系统新手学习.pdf

    通过与其他命令如`exec`、`xargs`和`grep`结合,可以执行复杂的文件搜索和处理任务。此外,了解基础命令如`mkdir`、`ls`、`mv`、`cat`、`grep`和`dd`,将极大地提升你的工作效率。 3. **系统管理命令** - **安装与...

    shell脚本的学习

    在学习Shell脚本时,理解其基本语法和常见问题的解决方案至关重要。以下是一些关键知识点的详细说明: 1. **处理含有空格的文件名**: 当文件名包含空格时,直接使用变量$FILENAME可能会导致命令将文件名解析为多...

    LINUX命令行学习笔记

    LINUX命令行学习笔记 本资源摘要信息主要讲解了LINUX命令行的常用命令,旨在帮助用户快速入门LINUX。该资源涵盖了基本的命令行操作、文件管理、目录管理、文本编辑等方面的知识点。 一. 命令行操作 * ALT+CTRL+F1...

    Linux命令学习 shell pdf格式

    第二章 使用find和xargs 第三章 后台执行命令 第四章 文件名置换 第五章 shell输入与输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 grep家族 第九章 AWK介绍 第十章 sed用法介绍 第十...

    需求1文档1

    攻击结束后,可以使用`pgrep`和`xargs`命令来终止trafgen进程。 生成的攻击数据经过Logstash过滤和分类后,被导入到Elasticsearch集群,以支持快速检索和分析。Elasticsearch是一个分布式、RESTful风格的搜索和数据...

    Linux 导读 表格

    配合`grep`、`xargs`等命令,可以实现图形界面工具难以企及的功能。熟悉安装和登录命令(如`login`、`shutdown`)、文件处理命令(如`mkdir`、`mv`)、系统管理命令(如`df`、`top`)以及网络操作命令(如`ifconfig`...

    怎样才能学好linux?

    通过结合`exec`、`xargs`和`grep`等命令,可以实现复杂的文件搜索和处理任务,这是图形界面难以比拟的效率。因此,对常见的Linux命令如`ls`, `cd`, `cp`, `mv`, `rm`, `vi/vim`等进行深入理解和实践是非常必要的。 ...

    线性规划的matlab代码-software_engineering:这是与深度学习相关的软件工程的仓库

    欲学习的技能分为三类:Linux理论和操作,软件工程,高效工具链。目录如下: Linux理论和操作 1.1 Linux命令行 1.1.1 前后台调度:fg/jobs/nohup/& 1.1.2 管道和输出重定向:pipe/&1/&2/>/>>/tee/tail 1.1.3 文件...

    配置Alibaba Cloud ToolKit实现应用程序打包功能.docx

    ps -aux|grep -v grep |grep server-jwt| awk '{print $2}'|xargs kill -9; # 用java 方式启动server-jwt-1.0.jar nohup java -jar /root/server-jwt-1.0.jar &; 将上面的命令行中的“server- jwt”替换为你自己的...

    Linux系统新手学习的11点建议(转)

    例如,`find`命令是查找文件的神器,配合`grep`、`xargs`等工具可以实现复杂的数据搜索和处理任务。熟练掌握常用的命令,如`ls`、`cd`、`mkdir`、`rm`等,能让你在Linux环境中游刃有余。 选择一本高质量的Linux学习...

    Linux 常用命令学习.docx

    Linux 常用命令学习 Linux 操作系统中,命令是最基本的组成部分,掌握常用的 Linux 命令对于 Linux 的使用和管理至关重要。本文档将介绍一些常用的 Linux 命令,包括 ls、cd、pwd、mkdir、rm、rmdir、mv、cp 和 cat...

    鸟哥的 Linux 私房菜第11章-认识与学习 BASH1

    常用命令如`grep`用于过滤输出,`sort`用于排序,`wc`计算字符数、行数等,`tee`实现双向重定向,`xargs`则可以将管线输出作为参数传递给其他命令。 通过深入学习和实践,你可以利用BASH的强大功能提高工作效率,...

    UNIX shell 编程指南

    find 和 exec xargs 保证shell脚本执行唯一性 用一条命令处理分别改变文件和文件夹的权限 unix时间戳与系统时间相互转换 awk的学习 保护自己编写的shell程序 农行全国集中版代发工资shell程序 Shell程序设计的流程...

Global site tag (gtag.js) - Google Analytics