執行命令:xargs
當find
產生乙個檔案列表時
,該列表提供給另乙個命令有時是很有用的.
案例:
$touch abc.c erd.c oiy.c
$ll./erd.c
./abc.c
./oiy.c
$find -name '*.c'| rm
rm: 缺少運算元
請嘗試執行"rm --help"
來獲取更多資訊。
$find -name '*.c'| xargs rm
$find -name '*.c'
無任何顯示,
說明已成功刪除.
1.簡介,
之所以能用到這個命令
,關鍵是由於很多命令不支援管道
(|)來傳遞引數
,而日常工作中有這個必要
,所以就有了
xargs 命令,
如上例.
xargs可以讀入
stdin
的資料,
並且以空白子元或斷行子元作為分辨,將
stdin
的資料分隔成為
atguments,
因為是以空白子元作為分隔,所以
,如果有一些檔名或者其他有意義的名詞內含空白子元的時候
,xargs
就可能會出現誤判了.
$touch 'file 1.log' 『file 2.log』
$ll總用量 0
-rw-r--r-- 1 root root 0 7月
13 10:18 file 1.log
-rw-r--r-- 1 root root 0 7月
13 10:18 file 2.log
$find -name '*.log'
./file 2.log
./file 1.log
$find -name '*.log' | xargs rm
rm: 無法刪除
"./file":
沒有那個檔案或目錄
rm: 無法刪除
"2.log":
沒有那個檔案或目錄
rm: 無法刪除
"./file":
沒有那個檔案或目錄
rm: 無法刪除
"1.log":
沒有那個檔案或目錄
原因很簡單,xargs
預設是以空白字元(空格
,tab,
換行符)
來分割記錄的
,因此檔名
./file 1.log
被解釋成了兩個記錄
./file
和1.log,
不幸的是
rm找不到這兩個檔案.
為了解決此類問題,
聰明的人類想出了乙個辦法,讓
find
在列印出乙個檔名之後接著輸出乙個
null
字元(『 』)而不是換行符
,然後再告訴
xargs
也用null
字元來作為記錄的分隔符
,這就是
find
的-print
和xargs的-0
選項.$find -name '*.log' -print0 | xargs -0 rm
2.主要選項
選項含義
-0當stdin
含有特殊子元的時候
,將其當成一般字元
-a file
從檔案中讀入作為stdin
-e flag
注意有的時候可能會是-e,flag
必須是乙個以空格分割的標誌,當
xargs
分析到含有
flag
這個標誌的時候就停止 -p
當每次執行乙個argument
的時候諮詢問一次使用者.
-n num
後面加次數,
表示命令在執行的時候一次用
arguments
的個數,
預設是用所有的.
-t便是先列印命令,
然後在執行 -i
或者是-i,
將xargs
的每項名稱
,一般是一行一行的賦值給
{},可以用
{}代替
-r no-run-if-enpty
當xargs
的輸入為空的時候則停止
xargs,
不用再去執行了
-s num
命令列的最大字元數
-d delim
分隔符,
預設的xargs
分隔符是回車
,argument
的分隔符是空格
,這裡修改的是
xargs
的分隔符 -x
exit的意思
,主要是匹配
-s使用 -p
修改最大的程序數,
預設是1,為0
的時候as mang as it can
find -print和
-print0
的區別:
-print每乙個輸出後會新增乙個回車換行符,而
-print0
則不會.
JavaScript學習筆記 四十五 策略
策略模式能夠讓你在執行時選擇演算法。你的 使用者可以處理相同的介面但可以從一些可用的演算法中挑選演算法去處理他們具體的任務,依賴於他們打算做什麼的環境。乙個使用策略模式的示例將是處理表單驗證。你可以通過validate 方法建立乙個驗證器 validator 物件,這個方法將會被呼叫,不管表單的具體...
python爬蟲學習第十五天
from urllib.request import urlopen from bs4 import beautifulsoup import re import datetime import random def randomurl articleurl url articleurl html ...
python 學習第十五天(繼承)
python中繼承分為單繼承和多繼承 class parent1 如果沒有繼承,python3中會預設繼承object這個類 pass class parent2 pass class son1 parent1 單繼承,父類是parent1 pass class son2 parent1,paren...