日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux-xargs命令

發布時間:2025/3/21 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux-xargs命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

xargs命令是給其他命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。

它擅長將標準輸入數據轉換成命令行參數,xargs能夠處理管道或者stdin并將其轉換成特定命令的命令參數。

xargs也可以將單行或多行文本輸入轉換為其他格式,例如多行變單行,單行變多行。

xargs的默認命令是echo,空格是默認定界符

這意味著通過管道傳遞給xargs的輸入將會包含換行和空白,不過通過xargs的處理,換行和空白將被空格取代。

xargs是構建單行命令的重要組件之一。


語法

[root@entel2 ~]# xargs --help Usage: xargs [-0prtx] [--interactive] [--null] [-d|--delimiter=delim][-E eof-str] [-e[eof-str]] [--eof[=eof-str]][-L max-lines] [-l[max-lines]] [--max-lines[=max-lines]][-I replace-str] [-i[replace-str]] [--replace[=replace-str]][-n max-args] [--max-args=max-args][-s max-chars] [--max-chars=max-chars][-P max-procs] [--max-procs=max-procs] [--show-limits][--verbose] [--exit] [--no-run-if-empty] [--arg-file=file][--version] [--help] [command [initial-arguments]]Report bugs to <bug-findutils@gnu.org>.

栗子

xargs用作替換工具,讀取輸入數據重新格式化后輸出。

定義一個測試文件,內有多行文本數據:

[root@entel2 ~]# cat xargs.txt a b c d e f g h i j k l m n o p q r s t u v w x y z

多行輸入單行輸出

[root@entel2 ~]# cat xargs.txt a b c d e f g h i j k l m n o p q r s t u v w x y z [root@entel2 ~]# cat xargs.txt |xargs a b c d e f g h i j k l m n o p q r s t u v w x y z

-n選項多行輸出

[root@entel2 ~]# cat xargs.txt | xargs -n5 a b c d e f g h i j k l m n o p q r s t u v w x y z [root@entel2 ~]#

-d選項可以自定義一個定界符:

[root@entel2 ~]# echo "nameXnameXnameXname" | xargs -dX name name name name

結合-n選項使用

[root@entel2 ~]# echo "nameXnameXnameXname" | xargs -dX -n2 name name name name

讀取stdin,將格式化后的參數傳遞給命令

假設一個命令為 xgj.sh 和一個保存參數的文件args.txt:

args.txt已經具備執行權限

[root@entel2 test]# cat xgj.sh #!/bin/bash #打印所有的參數 echo $* [root@entel2 test]# cat args.txt aaa bbb ccc

xargs的一個選項-I,

使用-I指定一個替換字符串{},

這個字符串在xargs擴展時會被替換掉,當-I與xargs結合使用,每一個參數命令都會被執行一次:

[root@entel2 test]# cat args.txt | xargs -I {} ./xgj.sh XXX {} YYY XXX aaa YYY XXX bbb YYY XXX ccc YYY

復制所有圖片文件到 /data/images 目錄下:

ls *.jpg | xargs -n1 -I cp {} /data/images

xargs結合find使用

用rm 刪除太多的文件時候,可能得到一個錯誤信息:
/bin/rm Argument list too long.

用xargs去避免這個問題:

find . -type f -name "*.log" -print0 | xargs -0 rm -f

xargs -0將\0作為定界符。

統計一個源代碼目錄中所有py文件的行數:

find . -type f -name "*.py" -print0 | xargs -0 wc -l

查找所有的jpg 文件,并且壓縮它們:

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

xargs其他應用

假如你有一個文件包含了很多你希望下載的URL,你能夠使用xargs下載所有鏈接:

cat url-list.txt | xargs wget -c

子Shell(Subshells)

運行一個shell腳本時會啟動另一個命令解釋器.,就好像你的命令是在命令行提示下被解釋的一樣,類似于批處理文件里的一系列命令。

每個shell腳本有效地運行在父shell(parent shell)的一個子進程里。

這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程。

cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5

如果cmd2 是cd /,那么就會改變子Shell的工作目錄,這種改變只是局限于子shell內部,cmd5則完全不知道工作目錄發生的變化。

子shell是嵌在圓括號()內部的命令序列,子Shell內部定義的變量為局部變量。

子shell可用于為一組命令設定臨時的環境變量:

COMMAND1 COMMAND2 COMMAND3 ( IFS=: PATH=/bin unset TERMINFO set -C shift 5 COMMAND4 COMMAND5 exit 3 # 只是從子shell退出。 ) # 父shell不受影響,變量值沒有更改。 COMMAND6 COMMAND7

總結

以上是生活随笔為你收集整理的Linux-xargs命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。