1. 程式人生 > >xargs和grep的區別

xargs和grep的區別

查詢一個檔案applicationContext-profile.xml |中從關鍵字dataSource3 開始起上數九行

-B :before往前數

find . -name applicationContext-profile.xml |xargs grep -B9 dataSource3


比如:
find . -name "Makefile" | xargs grep "user"
find . -name "Makefile" | grep "user"

我試驗的結果好像不加xargs找的是檔名中含有user的檔案
加了xargs是找的檔案內容裡包含user的檔案

可是為什麼是這樣了?我的理解 | 的作用不是把find找出來的檔案傳遞給grep命令作為引數嗎,為什麼不加xargs沒有實現這個功能了?


也就是說,xargs會根據空格或換行符分割標準輸入(管道符傳遞過來的內容),然後根據分割結果多次執行後面的grep命令。這樣,每次只針對一個檔案執行grep,過濾的就是檔案內容。

find的結果是個多行字串,直接grep的話,就是在這個字串中進行過濾。這樣就如你所說,找的是檔名中包含user的檔案。

xargs更象一個篩選器,將符合管道傳遞過來的內容進行處理,這是一個極度高效的方法。xargs reads items from the standard input.
1、查詢包含string的檔案
find . -name ‘*.html’| xargs grep string
2、刪除符合條件的檔案
ls|xargs -i rm -rf {}
find . -name ‘*.log’ -mtime +30| xargs rm -rf
find . -name ‘*.log’ -mtime +30 -exec rm -rf {} \;
注意”{} \;”是一起用的,可以用”{} +”代替。
find . -name “*.log” -exec ls -l {} +
3、-I{}替換串replace-str
cat ip.txt | xargs -I {} echo {}/24
-i[replace-str]可以替代-Ireplace-str
cat ip.txt | xargs -i{} echo {}
cat ip.txt | xargs -iIP echo IP
在遠端伺服器列表的執行命令
cat ip.txt | xargs -I{} ssh -p322 
[email protected]
{} hostname 4、批量檔案改名 增加字元 ls -1 | xargs -t -i mv {} {}.bak 刪減字元 #!/bin/sh for i in `ls ABCD*` do n=${i#”ABCD”} mv $i $n done 或者 ls -1 ABCD* |sed ‘s/ABCD//’|xargs -t -i mv ABCD{} {} 刪除A字元 #!/bin/sh for file in `ls *A.wav`;do n=`echo $file| sed ‘s/A//g’` /bin/mv $file $n done 5、批量刪除包含code.html的行 find ./ -name “*.html” -exec grep code.html ‘{}’ \; |xargs sed -i ‘/code.html/d’ find ./ -name “*.html” -exec grep code.html ‘{}’ \; -exec sed -i ‘/code.html/d’ {} \; 6、批量替換 find ./ -name “*.html” -exec grep .com ‘{}’ \; -exec sed -i ‘s/.com/.cn/g’ {} \; find ./ -name “*.html” -exec grep .com ‘{}’ \; |xargs sed -i ‘s/.com/.cn/g’ 7、單行顯示所有使用者名稱 cut -d: -f1 < /etc/passwd | sort | xargs echo awk ‘{print $1}’ /etc/passwd | xargs echo 8、–verbose, -t cat a one two three four cat a |xargs cat a |xargs –verbose cat a |xargs –verbose –max-args=2 9、終止所有java程序 pgrep java|xargs kill -9


相關推薦

xargsgrep區別

查詢一個檔案applicationContext-profile.xml |中從關鍵字dataSource3 開始起上數九行 -B :before往前數 find . -name applicat

grep命令引數列表過長?我們還有find、xargsgrep

一、問題 撈取當前目錄中指定子目錄下指定伺服器指定時間範圍內所有包含有“功勳獲取”的日誌內容 1、指定子目錄 1.2.3.25 .... 1.2.3.83 2、指定伺服器 該伺服器的日誌的檔名格式為: sceneserver.log.(年的後兩位,兩位數)(月份,不夠用0補

對find,xargsgrep管道的一些深入理解

發送 文件名 rgs rom 輸入 很多 () option 理解 轉自於:http://fatmouse.xyz/2016/05/10/2016-05-10-find-grep-xargs-and-pipe/ 問題 相信大家都知道在目錄中搜索含有固定字符串文件的命令:

在 linux 中 find grep區別??

col linu 它的 -s glob 操作 功能 相關 round Linux 系統中 grep 命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。grep 全稱是 Global Regular Expression Print,表示

【Linux】- 對find,xargsgrep管道的一些理解

問題 相信大家都知道在目錄中搜索含有固定字串檔案的命令: find . -name '*.py' |xargs grep test 剛開始的時候,我不熟悉xargs命令,所以直接使用的命令是: find . -name '*.py' |grep test 結果並不是自己所期望的。

linux萬用字元,grep egrep區別

前些天寫字串匹配的指令碼,如下:   1 #!/bin/sh   2   3 echo"path: /home/appadmin/workspace"   4 echo"usage: "$0" [h|cpp|both|all] string_symbol"   5 ech

jenkins遠端部署使用shell指令碼進行備份與findgrep匹配的區別

需求 公司想jenkins在遠端部署專案的同時,還要進行專案備份, 之前只備份最近一次構建的資料,也就是隻保留到一份, 現在公司希望能保留按時間進行倒序,保留三份備份包。 思路 1、使用rm -rf 檔名把我們要保留的三份備份包排除掉。 2、要排除查

Linux findgrep區別

1.find:查詢檔案或目錄 語法: find 查詢位置 檔名或目錄名 如:在 /root/luojiahui目錄下查詢index.htm find /root/luojiahui index.htm

GETPOST區別總結

get 、post 、區別一、GET和POST區別的普遍看法:HTTP 定義了與服務器交互的不同方法,最常用的有4種,Get、Post、Put、Delete,如果我換一下順序就好記了,Put(增),Delete(刪),Post(改),Get(查),即增刪改查,下面簡單敘述一下:1)Get, 它用於獲取信息,註

centos使用findgrep命令

find grep 作為一個ITer需要竟要使用到命令行,find和grep命令了解非常必要,下面說些常用方法find查找文件find ./ -name 192.168.1.166_server_log #根據文件名查找find . -type f -name "*.phtml"

JS中const、varlet區別

方法 pre 命令 con 使用 它的 comm 作用 影響 在JavaScript中有三種聲明變量的方式:var、let、const。 1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。 const b

xargs exec詳解

linux xargs exec cpxargs 和 exec詳解 exec主要和find一起配合使用,xargs比exec用的地方要多。xargs應用把管道符前面的輸出作為xargs後面的命令的輸入。好處在於可以簡化步驟。常常和find一起使用,#find . -mtime +10 |xargs rm

equals == 的區別

strong 都是 什麽 brush -s 新的 equals方法 實現 繼承 首先 看比較的對象是否為字符串,若為(String)字符串用equals 比較, 比較的是他們的值。相同返回 true ,不相同返回false. package one; p

mybatis中的#$的區別

背景 插入 trac sql註入 -m .com article 參數 -s 1. #將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那麽解析成sql時的值為order by "111", 如果傳

hibernate中hql語句中listiterate區別

每次 hibernate 寫入 所有 讀取 條件 iter 查詢 hql 1.使用list()方法獲取查詢結果,每次發出一條語句,獲取全部數據。2.使用iterate()方法獲取查詢結果,先發出一條SQL語句用來查詢滿足條件數據的id,然後依次按照這些id查詢記錄,也就是要

java中ArrayListLinkedList區別

插入 list 新的 查找 arr tro 基於 列表 時間復雜度 ArrayList和LinkedList最主要的區別是基於不同數據結構 ArrayList是基於動態數組的數據結構,LinkedList基於鏈表的數據結構,針對這點,從時間復雜度和空間復雜度來看主要區別:

mysql中replicate_wild_do_tablereplicate_do_db區別

lan rep cati mil 多人 pan think lte 避免 使用replicate_do_db和replicate_ignore_db時有一個隱患,跨庫更新時會出錯。 如在Master(主)服務器上設置 replicate_do_db=test(my.conf

2000行之宏中###的區別

ret fun color bsp nbsp urn div def include #include<stdio.h> #define Fun(a,b) a##b int main() { x=‘H‘; y=‘W‘; printf("

正則表達式grep

表達式 color 字母 牟定 單詞 正則表達式分為兩類:基本正則表達式和擴展正則表達式。基本正則表達式元字符: 字符匹配: .:匹配任意一個字符。 []:匹配[]中指定範圍內的任意一個字符。 [^]:指定範圍外的任意一個字符;也可以得知,在[]括號內,^表示取反。

HTML提交方式postget區別(實驗)

des url action 通過 性別 清除數據 map pass pack HTML提交方式post和get區別(實驗) 一、post和get區別 get提交,提交的信息都顯示在地址欄中。 post提交,提交的信息不顯示地址欄中,顯示在消息體中。 二、客戶端代碼