關於 ‘--exec’ 參數( find 命令)及介紹 ‘xargs ’命令區別(新版)


###前言:

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 倆者有相異部分(表格如下)

name same different
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就很棒 **


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM