成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

在Linux上使用xargs命令的詳細教程

瀏覽:3日期:2024-04-11 17:25:27

大家好,我是良許。

在使用 Linux 時,你是否遇到過需要將一些命令串在一起,但是其中一個命令不接受管道輸入的情況呢?在這種情況下,我們就可以使用 xargs 命令。xargs 可以將一個命令的輸出作為參數發送給另一個命令。

在 Linux 中,所有標準的應用程序都有與之關聯的三個數據流。分別是標準輸入流(stdin),標準輸出流(stdout)和標準錯誤流(stderr)。這些流通過文本來運行,我們使用文本將輸入(stdin)發送到命令,然后響應(stdout)將會以文本形式顯示在終端窗口上。錯誤消息也以文本的形式顯示在終端窗口上(stderr)。

Linux 和類 Unix 操作系統的一大功能是可以將一個命令的標準輸出流傳遞到另一個命令的標準輸入流。第一個命令不會管它的輸出是否寫到了終端窗口,第二個命令也不會管它的輸入是否來自鍵盤。

雖然所有 Linux 命令都有三個標準流,但是并不是所有命令都接受另一個命令的標準輸出作為它的標準輸入流的輸入。因此我們無法通過管道將輸入傳給這些命令。

xargs是一個使用標準數據流構建執行管道的命令。通過使用xargs命令我們可以使 echo,rm 和 mkdir 等命令接受標準輸入作為它們的參數。

xargs命令

xargs接受管道輸入,也可以接受來自文件的輸入。xargs 使用該輸入作為我們指定的命令的參數。如果我們沒有給xargs指定特定的命令,則默認使用 echo。xargs 始終生成單行輸出,即使輸入的數據是多行的。

假如我們使用 ls 的 -1(每行列出一個文件)選項,則會得到一列文件名稱:

$ ls -1 ./*.sh

這一命令列出了當前目錄中的 Shell 腳本文件。

在Linux上使用xargs命令的詳細教程

如果我們將輸出結果通過管道傳遞給 xargs ,會得到什么樣的效果?

$ ls -1 ./*.sh | xargs

在Linux上使用xargs命令的詳細教程

可以看出來,輸出以一長串文本的形式寫到了終端上。由此可見,xargs 可以將輸出作為參數傳遞給其他命令。

配合wc命令使用xargs

我們可以使用 xargs 命令輕松地讓 wc 命令計算多個文件中的單詞數,字符數和行數

$ ls *.c | xargs wc

執行結果如下:

在Linux上使用xargs命令的詳細教程

命令運行結果顯示了每個文件的統計信息以及總數。

這條命令執行了以下操作:

ls列出了所有的 .page 文件,并將該列表傳給了xargs。xargs 將所有文件名傳遞給 wc。wc 將這些文件名作為命令行參數進行處理。

使用帶有確認消息的xargs

我們可以使用 -p(交互)選項來讓 xargs 提示我們是否要進行下一步的操作。

如果我們通過 xargs 將一串文件名的字符串傳遞給 touch 命令,touch 將創建這些文件。

$ echo ’one two three’ | xargs -p touch

在Linux上使用xargs命令的詳細教程

終端上顯示將要執行的命令,xargs 等待我們輸入 y 或 Y ,n 或 N 并按 Enter 來響應。如果只按了 Enter ,則視為 n。只有當我們當輸入 y 或 Y 時才執行該命令。

我們按下y和 Enter ,然后使用ls用來檢查文件是否已經創建。

$ ls one two three

在Linux上使用xargs命令的詳細教程

將xargs與多個命令一起使用

我們可以用-I(初始參數)選項來將 xargs 和多個命令一起使用。這一選項定義了替換字符串。在命令行中的任何出現替換字符串的位置,都會插入我們提供給 xargs 的值 。

有點抽象,我們以一個實例來進行講解。

我們先用 tree 命令查看當前目錄中的子目錄。該 -d(directory)選項使 tree 命令忽略文件,只輸出目錄。

$ tree -d

在Linux上使用xargs命令的詳細教程

現在只有一個子目錄 images 。

在 directories.txt 這個文件中,我們有一些想要創建的目錄的名稱。我們先用 cat 查看其中的內容。

$ cat directories.txt

在Linux上使用xargs命令的詳細教程

我們把這些內容作為輸入數據傳給 xargs ,執行以下的命令:

$ cat directories.txt | xargs -I % sh -c ’echo %; mkdir %’

這條命令執行了以下操作:

cat directories.txt :將 directrories.txt 文件的內容(所有要創建的目錄名稱)傳給 xargs。xargs -I % :定義了替換字符串 %。sh -c:啟動一個新的子shell。-c(commond)讓 shell 讀取命令。’echo %; mkdir %’:每個%都會被替換為 xargs 傳過來的目錄名稱 。echo 命令打印目錄名稱,mkdir 命令創建目錄。

命令執行結果:

在Linux上使用xargs命令的詳細教程

我們可以用 tree 驗證已創建是否已創建了目錄。

$ tree -d

在Linux上使用xargs命令的詳細教程

將文件復制到多個位置

我們可以使用 xargs 命令來用一個命令將文件復制到多個位置。

首先,通過管道將兩個目錄的名稱傳給 xargs 。并且讓 xargs 一次只將其中一個參數傳遞給正在使用的命令。

想要調用 cp 兩次,每次各使用兩個目錄中的一個作為命令行參數,我們可以通過將 xargs 的 -n(max number)選項設置為 1 來實現。

這里還使用了-v(verbose 詳細信息)選項,讓 cp 反饋正在執行的操作。

$ echo ~/dir1/ ~/dir2/ | xargs -n 1 cp -v ./*.c

我們將文件復制到了兩個目錄,一次復制一個目錄。cp 反饋了詳細信息,讓我們看到進行了哪些操作。

在Linux上使用xargs命令的詳細教程

刪除嵌套目錄中的文件

如果文件名中包含空格或者其他特殊字符(例如換行符),xargs 將無法正確解釋這些文件名。我們可以使用 -0(空終止符)選項來解決這一問題。此時, xargs 將使用 null 字符作為文件名最終的分隔符。

這里我們以 find 命令為例。find 有自己的選項來處理文件名中的空格和特殊字符,即 -print0(全名,空字符)選項。

$ find . -name '*.png' -type f -print0 | xargs -0 rm -v -rf '{}'

這一命令執行了以下操作:

find . -name “*.png” :find 將從當前目錄中搜索名稱和 *.png 相匹配的對象,type -f 指定了只搜索文件。-print0:名稱將以空字符結尾,并且保留空格和特殊字符。xargs -0:xargs 也將考慮文件名以空值結尾,并且空格和特殊字符不會引起問題。rm -v -rf '{}':rm 將反饋正在進行的操作(-v),遞歸進行操作(-r),不發送錯誤提示而直接刪除文件(-f)。每個文件名替換 '{}'。

命令執行之后,將搜索了所有子目錄,刪除了其中匹配的文件。

在Linux上使用xargs命令的詳細教程

刪除嵌套目錄

假設我們要刪除一組嵌套的子目錄,先用tree進行查看。

$ tree -d

在Linux上使用xargs命令的詳細教程

$ find . -name 'level_one' -type d -print0 | xargs -0 rm -v -rf '{}'

這條命令使用 find 在當前目錄中遞歸搜索,搜索的目標是名為 level_one 的目錄,然后將目錄名通過xargs傳遞給 rm 。

這個命令和前面的命令之間的區別是,搜索的項目是最頂層目錄的名稱,而且-type d說明要查找的目錄,而不是文件。

在Linux上使用xargs命令的詳細教程

每個目錄的名稱都在刪除時打印出來。我們可以用tree再查看效果:

$ tree -d

在Linux上使用xargs命令的詳細教程

所有嵌套的子目錄已刪除了。

刪除一種文件類型以外的所有文件

我們可以使用 find ,xargs 和 rm 刪除所有類型的文件而只保留一種我們想要保留的類型的文件。這需要提供想要保留的文件類型。

-not 選項讓 find 返回所有與搜索模式不匹配的文件名。我們此時再次使用 xargs 的 -I (初始參數)選項。這次定義的替換字符串為 {} 。這和我們之前使用的替換字符串 % 的效果是相同的。

$ find . -type f -not -name '*.sh' -print0 | xargs -0 -I {} rm -v {}

在Linux上使用xargs命令的詳細教程

命令執行之后,我們再通過 ls 來確認結果。可以看到,目錄中只剩下了與 *.sh 相匹配的文件。

$ ls -l

在Linux上使用xargs命令的詳細教程

使用Xargs創建壓縮文件

我們可以使用 find 命令來搜索文件,并通過 xargs 將文件名傳給 tar 命令來創建壓縮文件。

我們將在當前目錄中搜索 * .sh 文件。

$ find ./ -name '*.sh' -type f -print0 | xargs -0 tar -cvzf script_files.tar.gz

命令執行結果將列出了所有 .sh 文件,并創建了壓縮文件。

在Linux上使用xargs命令的詳細教程

總結

到此這篇關于如何在Linux上使用xargs命令的文章就介紹到這了,更多相關Linux上使用xargs命令內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Linux系統
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产一二三精品| 欧美一区二区三区在线观看| 欧美影片第一页| 亚洲精品国产高清久久伦理二区| yourporn久久国产精品| 欧美日韩1234| 亚洲一区二区中文在线| av不卡免费看| 17c精品麻豆一区二区免费| 91小视频在线免费看| 日韩一卡二卡三卡四卡| 美女任你摸久久| 久久另类ts人妖一区二区| 亚洲欧美偷拍另类a∨色屁股| 精品一区二区国语对白| 老司机免费视频久久| 偷拍亚洲欧洲综合| 国产日韩在线一区二区三区| 亚洲乱码中文字幕| 亚洲国产一区二区三区在线播 | 春色校园综合激情亚洲| 在线不卡a资源高清| 精品一二三四区| 欧美精品在欧美一区二区少妇| 日本欧美大码aⅴ在线播放| 久久免费国产| 亚洲va韩国va欧美va| 老司机一区二区三区| 亚洲国产精品久久久男人的天堂 | 日韩欧美国产精品| 国产一区二区网址| 91精品婷婷国产综合久久性色 | 日韩视频一区二区在线观看| 国产激情精品久久久第一区二区| 3d成人动漫网站| 成人免费视频caoporn| 精品剧情在线观看| 国产福利一区在线观看| 日韩免费高清电影| 欧美日韩高清免费| 亚洲视频在线一区观看| 性一交一乱一区二区洋洋av| 亚洲成人免费视频| 日本道精品一区二区三区| 国产中文字幕精品| 久久网这里都是精品| 欧美精品亚洲精品| 亚洲综合免费观看高清完整版| 色婷婷av久久久久久久| 国产精品综合一区二区三区| 国产亚洲精品aa午夜观看| 亚洲精选一区| 亚洲婷婷综合色高清在线| 美女尤物久久精品| 国产精品91xxx| 欧美高清在线精品一区| 男人的天堂成人在线| 精品一区二区在线免费观看| 日韩一级成人av| 欧美性大战久久久久| 亚洲国产精品麻豆| 欧美日韩免费在线视频| 99久久久久免费精品国产 | 国产精品不卡视频| 亚洲一区二区免费看| 久久国产生活片100| 精品日韩欧美一区二区| 亚洲久久一区| 九色|91porny| 国产婷婷色一区二区三区| 亚洲国产免费| 蜜桃av一区二区在线观看| 久久综合五月天婷婷伊人| 国产精品久久久久久久免费软件 | 日本91福利区| 国产亚洲精品资源在线26u| 销魂美女一区二区三区视频在线| 国产在线国偷精品免费看| 国产欧美日韩三级| 老司机精品视频网站| av福利精品导航| 亚洲国产精品一区二区尤物区| 日韩欧美精品三级| 一区二区不卡在线视频 午夜欧美不卡'| 蜜臀av一区二区在线观看| 国产午夜精品理论片a级大结局| 亚洲一区二区在线看| 国产成人精品亚洲午夜麻豆| 亚洲欧美偷拍卡通变态| 欧美一区二区私人影院日本| 亚洲三级影院| 国产精品91xxx| 亚洲精品国产高清久久伦理二区| 911精品国产一区二区在线| 伊人成人在线视频| 亚洲精品第一国产综合野| 91精品国产综合久久蜜臀| 尹人成人综合网| 国产精品亚洲专一区二区三区| 亚洲精品欧美综合四区| 日韩一区二区免费视频| 亚洲在线一区| 色综合天天综合在线视频| 蜜桃精品视频在线观看| 中文字幕一区二区在线观看| 欧美老肥妇做.爰bbww| 亚洲免费大片| av资源站一区| 免费观看30秒视频久久| 国产精品视频在线看| 在线观看精品一区| 亚洲亚洲精品三区日韩精品在线视频| 国产主播一区二区| 一区二区三区国产精品| 久久这里都是精品| 欧美亚洲一区二区三区四区| 亚洲二区免费| 成人午夜大片免费观看| 日韩**一区毛片| 亚洲精品五月天| 国产欧美一区二区精品忘忧草| 欧美日韩五月天| 亚洲欧美日韩另类精品一区二区三区| 欧美99久久| 国产成人精品一区二区三区四区 | 91色.com| 久久国内精品自在自线400部| 亚洲制服丝袜av| 中文字幕中文在线不卡住| 欧美va亚洲va香蕉在线| 欧美在线观看禁18| 亚洲欧美激情诱惑| 在线高清一区| 9色porny自拍视频一区二区| 久久激情五月婷婷| 亚洲国产精品自拍| 国产精品灌醉下药二区| 久久综合九色综合97婷婷女人 | 激情欧美日韩一区| av亚洲精华国产精华精华| 久久99国产精品免费网站| 亚洲成av人影院| 成人免费一区二区三区视频 | 美女精品一区二区| 亚洲一区二区三区视频在线| 中文字幕免费在线观看视频一区| 日韩免费高清av| 在线综合视频播放| 欧美日韩一区不卡| 91黄视频在线观看| 久久久久国产精品一区三寸| 亚洲免费播放| 国产一区二区三区四区三区四| 成人免费毛片aaaaa**| 国产一区二区三区免费在线观看| 日韩精品免费视频人成| 亚洲国产一区二区三区| 一区二区三区四区激情| 亚洲特级片在线| 国产精品国产三级国产有无不卡 | 亚洲女同ⅹxx女同tv| 国产精品久久夜| 中文字幕成人网| 欧美激情综合五月色丁香小说| www国产成人| 精品国产伦一区二区三区观看体验| 欧美精品久久久久久久多人混战 | 午夜精品视频一区| 午夜电影一区二区| 亚洲综合色噜噜狠狠| 亚洲一区二区三区免费视频| 亚洲一区二区成人在线观看| 亚洲国产欧美日韩另类综合| 亚洲午夜精品在线| 亚洲一区二区精品3399| 亚洲国产另类av| 亚洲大片免费看| 天堂成人免费av电影一区| 日韩影院免费视频| 婷婷综合久久一区二区三区| 亚洲欧洲精品天堂一级| 日韩毛片一二三区| 亚洲女同ⅹxx女同tv| 亚洲一区二区伦理| 欧美日韩在线观看一区二区三区| www.欧美日韩| 波多野结衣亚洲一区| 国产乱妇无码大片在线观看| 久久精品国产99久久6| 婷婷国产在线综合| 亚洲一本大道在线| 一区二区免费看| 亚洲激情网站免费观看| 1区2区3区国产精品| 国产精品系列在线| 亚洲国产成人一区二区三区| 国产亚洲成aⅴ人片在线观看| 久久综合资源网| 欧美tk—视频vk| 欧美一级免费观看|