首页 > 其他分享 >关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别

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

时间:2024-02-26 11:58:34浏览次数:38  
标签:xargs name exec 命令 root find

find goal.log.*.gz -mtime +2 -exec rm -rf {} \;
find goal.log.*.gz -mtime +3|xargs rm -f

前言:

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(目录),那么系统默认就是" 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就很棒 **

(完)      

标签:xargs,name,exec,命令,root,find
From: https://www.cnblogs.com/psy-sdudio/p/18033999

相关文章

  • powershell 电源管理命令
    PowerShell中,你可以使用以下命令来管理电源设置:Get-Command-ModulePowerManagement:查看可用的电源管理命令。Get-CimInstance-Namespaceroot\cimv2\power-ClassNameWin32_PowerPlan:获取当前系统中的电源计划信息。Get-CimInstance-Namespaceroot\cimv2\powe......
  • 导出execl
    //导出letexportToExcel=async()=>{//创建一个新的工作簿constworkbook=newExcelJS.Workbook();constworksheet=workbook.addWorksheet("Sheet1");//在工作表中添加数据constdata=carStatNum.value;//添加列的数据类型定义worksheet......
  • vi编辑器命令
    viFile打开文件o启动编辑键盘Esc按键退出编辑Esc后,输入如下命令:w保存文件但不退出vi:wnewfile将修改另外保存到file中,不退出vi:w!强制保存,不退出vi:wq保存文件并退出vi:wq!强制保存文件,并退出vi:q不保存文件,退出vi:q!不保存文件,强制退出vi:e!放弃所有修改,......
  • 【译】代码更快、更好,借助 GitHub Copilot 的新功能:斜杠命令和上下文变量
    你是否曾经希望有一个人工智能助手可以帮助你更快更好地编写代码?那就是VisualStudioCopilotChat为您提供的:一个人工智能驱动的结对程序员,可以回答您的问题,建议代码片段,解释代码逻辑,并与您讨论您的项目。您可以使用Copilot更快更好地编写代码,因为它可以帮助您避免错误并......
  • 为什么设置虚拟环境和conda的常用命令
    为什么需要虚拟环境anaconda和conda和pipAnaconda介绍、安装及使用教程Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等Miniconda包括Conda、Pythonconda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同......
  • 第2单 - 实验 debug 命令
         编写命令 以汇编方式向内存中写入数据 A命令 向0010:0000 地址写入汇编  U命令查看刚录入的命令 查看内存中的汇编语言 U命令   修改CS,IP,到新录入的程序   T命令 执行  2.    3. Dff......
  • mysql access denied for root ... mysqld –skip-grant-tables 命令失效 ... Failed
    <!--密码突然登录不上MySQL了,久了也不晓得是不是密码不正确...只能改密码...一年难得碰一次,感觉每次总有莫名其妙的问题--><!--修改方案只找到一个,就是无密码验证开启mysql服务,然后登录,设置新密码--><!--mysql版本不同有些命令无效,大概分高低两版本--><!--低版命令我......
  • windows基础命令--新手常用
     systeminfo查看计算机信息(版本,位数,补丁情况)whoami查看当前用户及权限ipconfig查看网卡信息cd切换目录typexxx.txt查看文件内容del删除文件dir显示目录-a浏览所有文件copy要复制的路径下的文件复制到那个路径reagentc/info用于查看Windows恢复环境配置信......
  • Ansible Ad-hoc,命令执行模块
    目录Ad-hocAd-hoc简介Ad-hoc命令说明Ad-hoc示例命令执行模块1.command模块2.shell模块3.raw模块4.script模块Ad-hocAd-hoc简介Ad-hoc是Ansible下临时执行的一条命令,对于复杂的命令会使用playbook。Ad-hoc的执行依赖于模块,ansible官方提供了大量的模块。如command,file,cop......
  • powershell 5 信息收集命令
    PowerShell命令来查看当前用户及其权限:powershellCopyCode#获取当前登录的用户$env:USERNAME#获取计算机名称$env:COMPUTERNAME#检查当前用户是否为管理员([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([S......