文档章节

关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)

erlinux
 erlinux
发布于 2017/06/14 23:07
字数 1168
阅读 47
收藏 0

###前言:

find 命令一直都是系统管理员的常用命令之一, 其参数中 “-exec” 尤其实用。而 “xargs” 命令,针对查询也有属于自己的见解。本文着重讲解的是围绕 find 命令查询为主线,使用 -exec 参数(find 命令) 或使用 xargs 命令。

img

将当前 “标准输出” (数据流) 作为另一个命令的 “标准输入” 。简单来说,将 find 查询出的命令做更多处理。

一、预备教程, “find” 命令。

# null 参数

find   .  或 find  ~

这是最基本的使用find的方法。 具体功能是列出 /root 目录下的所有文件,这里仅仅是举例(未必定是 /root 目录),注:这条命令也可以配合 “|grep” 进行更多操作,如下比如我想查询关于zabbix的信息(“ * ”为通配符表所有)

# name 参数

find -name tom 或 find -iname tom

注:这里我并没有打目录位置。原因是" find <path> 中 <path> 并不是必须的。

**如果你需要查找的位置就在当前path(目录),那么系统默认就是" find . " **

另:参数 -name 与 -iname 俩者有相异部分(表格如下)

namesamedifferent
name 参数匹配用户输入100%完全匹配用户输入
iname 参数匹配用户输入忽略大小写区别,相较结果更多

# type 参数

find /root -name rabbit -type f

类型参数列表表示字母
普通文件f
符号连接l
普通目录d
字符设备c
块设备b
套接字s

# size 参数

find /root -type f -size 10M

注:关于 “ -size 10M ” 在大小单位上是允许 “+” “-” 操作的。即 “+10M” 大于10M, “-10M” 小于10M 。

大小字母文字表示
b块(512字节)
c字节
w字(2字节)
k千字节
M兆字节
G吉字节

find的参数还有很多已经和本文后面内容无关,这里列出三个。文章继续...

比如:-perm可以选择权限,-user可是选择用户,-group可以选择用户组等 。


二、重点参数,“find” 命令

-exec command:command 为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。

find 相關的額外動作

{ }代表的是「由 find 找到的内容」,如上图所示,找到的结果会被放置到 { } 位置中; -exec一直到 ; 是关键字,代表找到额外动作的开始(-exec)到结束(\),在这中间的就是找到指令内的额外动作

因为「;」在bash的环境下是有特殊意义的,因此利用反斜线来跳脱。

以上,来自鸟哥[http://linux.vbird.org/linux_basic/0220filemanager.php]的相关介绍。

# 显示

find /root/.ssh -exec ls -l {} ;

删除

find /root -size 10M -exec rm -rf {} ;

# 重命名

find /root -name tom -exec mv {} tom_rename ;

# 移动

find /root -name tom_rename -exec mv {} /tmp ;

##三、预备知识,”xargs”命令

xargs可以将标准输出(数据流)转换成命令参数作为标准输入( 进行横排输出)。

更多查看:https://zh.wikipedia.org/wiki/Xargs

1、简单 echo

注意: xargs 命令的 echo 指令可忽略(默认)。

2、定义界定符

在 “xargs” 中是有 “界定符” 的,类似 find 中 { } ,代表的是「由 xargs 找到的内容」。xargs 不需要 “;” 做结束符。

另:关于定义界定符(-I),有一点很多文章都没有强调。

使用 xargs 命令时并不是一定要使用 “{}” 方括号的,可能是因为 find 命令的( -exec )默认是 “{}” (为了统一)使用其他的定义符都是可以的(甚至你都可以用英文,数学等作为定义界定符)

3、“xargs” is command not parameter(参数)

xargs 是一条命令,您可以通过 help 或者 man 查询到关于 xargs 的详细信息。

这条性质赋予了 xargs 更多的可能性,而不仅仅受限于 find 命令。

四、重点使用,”xargs”命令

# 显示

find /root -name Tom | xargs -I {} ls -ld {}

# 删除

find /root -name Tom | xargs rm -rf

# 重命名

find /root -name RABBIT | xargs -I - mv - RABBIT_NEW

# 移动

find /root -name RABBIT_NEW | xargs -I 8 mv 8 /tmp

五、后记

最后再说说关于 xargs,基础的功能就是这篇文章所写所说,但是熟练使用,会发现各种奇葩的运用方法。

比如说,你在(渗透测试)文本文档中有很多URL地址需要下载。那么运用xargs,可以使用这样下载:

cat url.txt | xargs wget -c

再比如说,你在卸载RPM的PHP包时,需要卸载所有包。那么运用xargs,可以使用这样卸载:

rpm -qa |grep php | xargs rpm -e

此处因当前无应用需要卸除,使用 yum 重装代替

另外关于 find 命令:我们跳出 find 还有更多的选择,CentOS下的mlocate就很棒 **

© 著作权归作者所有

erlinux
粉丝 0
博文 6
码字总数 7086
作品 0
运维
私信 提问
Linux Shell 文本处理工具集锦

本文将介绍Linux下使用Shell处理文本时最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和参数都是最常用和最为实用的; 我对shell脚本使用的原则...

小股儿
2014/01/06
29
0
12.12 &12.13 基础命令练习一

12.12 &12.13 基础命令练习一 内容: 1. mkdir ls pwd cd touch vi/vim echo cat 2. 输出/出入重定向 3. EOF 起止符 往文件中写入多行内容 4. xargs -n 分组显示 5. cp rm mv 6. man帮助手册...

千古东风
2017/12/21
0
0
Linux Shell 命令总结

前言 本文介绍了常用的Linux shell命令,包括date、cut、sort、uniq、sed、vi、diff、find等,同时给出尽可能使用的实例以便于理解。 2. Linux shell命令 2.1 date 作用:获取或者设置日期 ...

fjabing
2014/04/30
0
0
linux常用的shell文本处理方法

find 文件查找 查找txt和pdf文件 find . ( -name ".txt" -o -name ".pdf" ) -print 正则方式查找.txt和pdf find . -regex ".(.txt|.pdf)$" -iregex: 忽略大小写的正则 否定参数查找所有非t......

stone_
2016/05/06
95
2
argument list too long错误解决

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它...

余二五
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

枚举 创建/获取key,name,list

创建枚举 public enum MessageTypeEnum { // 类型:0.一般消息,1.公告消息,2交易消息,3.活动消息,4.其他消息 type_general("一般消息", "0"), type_ann("公告消息", "1")......

龘游戏人生龘
7分钟前
0
0
Linus 本尊来了!为什么 KubeCon 越来越火?

阿里妹导读: 从200人的小会议到3500 多位云原生和开源领域工程师齐聚一堂的大会,KubeCon 只用了四年,昨天,在KubeCon China 2019 上阿里巴巴宣布开源 OpenKruise,今天,Linus 本尊竟然现...

阿里云云栖社区
44分钟前
2
0
五小时构建云原生电商平台 | KubeCon SOFAStack Workshop 详解

本文根据 KubeCon China 2019 同场活动 SOFAStack Cloud Native Workshop 内容整理, 文末包含文档、PPT 地址,欢迎试用和提出建议。 2019 年 6 月 25 日,在 KubeCon China 2019,全球知名开...

SOFAStack
45分钟前
6
0
跨平台开发框架DevExtreme v19.1.4正式发布|附下载

DevExtreme Complete Subscription是性能最优的 HTML5,CSS 和 JavaScript 移动、Web开发框架,可以直接在Visual Studio集成开发环境,构建iOS,Android,Tizen和Windows Phone 8应用程序。D...

FILA6666
45分钟前
2
0
数据库链接断开 Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

报错信息如下: Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 97,130 mill......

为了美好的明天
52分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部