中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在linux中使用xargs命令

發布時間:2021-03-30 16:58:52 來源:億速云 閱讀:143 作者:Leah 欄目:服務器

今天就跟大家聊聊有關如何在linux中使用xargs命令,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

一、將多行輸入轉換成單行輸入:

[root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt
[root@host1 test]# cat example.txt 
1 2 3 4 5 
6 7 8 
9 10 11 12
[root@host1 test]# cat example.txt |xargs 
1 2 3 4 5 6 7 8 9 10 11 12

將單行輸入轉換成多行輸出:

[root@host1 test]# cat example.txt | xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12

自定義定界符進行轉換(默認的定界符是空格):

[root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2
Hello Hello
Hello Hello

二、在腳本中運用:

[root@host1 test]# cat echo.sh 
#!/bin/bash
echo $* '^-^'

當參數傳遞給echo.sh后,它會將這些參數打印出來,并且以"^-^"作為結尾:

[root@host1 test]# echo -e "Tom\nHarry\nJerry\nLucy" > args.txt
[root@host1 test]# cat args.txt | xargs bash echo.sh 
Tom Harry Jerry Lucy ^-^
[root@host1 test]# cat args.txt | xargs -n 2 bash echo.sh 
Tom Harry ^-^
Jerry Lucy ^-^

在上面的例子中,我們把參數源都放入args.txt文件,但是除了這些參數,我們還需要一些固定不變的參數,比如:

[root@host1 test]# bash echo.sh Welcome Tom 
Welcome Tom ^-^

在上述命令執行過程中,Tom是變量,其余部分為常量,我們可以從"args.txt"中提取參數,并按照下面的方式提供給命令:

[root@host1 test]# bash echo.sh Welcome Tom 
[root@host1 test]# bash echo.sh Welcome Herry
[root@host1 test]# bash echo.sh Welcome Jerry
[root@host1 test]# bash echo.sh Welcome Lucy

這時我們需要使用xargs中-I命令:

[root@host1 test]# cat args.txt | xargs -I {} bash echo.sh Welcome {} 
Welcome Tom ^-^
Welcome Harry ^-^
Welcome Jerry ^-^
Welcome Lucy ^-^

-I {} 指定替換字符串,對于每一個命令參數,字符串{}都會被從stdin讀取到的參數替換掉,

使用-I的時候,命令以循環的方式執行,如果有4個參數,那么命令就會連同{}一起被執行4次,在每一次執行中{}都會被替換為相應的參數。

三、結合find使用

xargs和find是一對非常好的組合,但是,我們通常是以一種錯誤的方式運用它們的,比如:

[root@host1 test]# find . -type f -name "*.txt" -print | xargs rm -f

這樣做是有危險的,有時會刪除不必刪除的文件,如果文件名里包含有空格符(' '),則xargs很可能認為它們是定界符(例如,file text.txt會被xargs誤認為file和text.txt)。

如果我們想把find的輸出作為xargs的輸入,就必須將-print0與find結合使用以字符null('\0')來分隔輸出,用find找出所有.txt的文件,然后用xargs將這些文件刪除:

[root@host1 test]# find . -type f -name "*.txt" -print0 | xargs -0 rm -f

這樣就可以刪除所有的.txt文件了,xargs -0 將\0作為輸入定界符。

四、運用while語句和子shell

[root@host1 test]# cat files.txt | (while read arg ;do cat $arg;done)

這條命令等同于:

[root@host1 test]# cat files.txt | xargs -I {} cat {}

看完上述內容,你們對如何在linux中使用xargs命令有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴堡县| 贵阳市| 房产| 左贡县| 高安市| 涟水县| 延长县| 望城县| 大兴区| 肇源县| 广南县| 新疆| 洛扎县| 镇江市| 青神县| 专栏| 星座| 盐源县| 寻乌县| 平顶山市| 邵东县| 孝感市| 苍南县| 宽甸| 德格县| 灵璧县| 家居| 宝丰县| 射阳县| 略阳县| 古田县| 林芝县| 闵行区| 永川市| 洪洞县| 壤塘县| 乌什县| 营口市| 宜春市| 尉氏县| 甘孜县|