程式狂想筆記

一個攻城師奮鬥史

0%

xargs 參數代換簡單使用筆記

最近做find . -mmin -60 | ls -l發現怎麼不能讀ls內容
原來我以為 |pipe 就是把輸出結果加到後面去
但是並非跟<,<<一樣
所以我在stackoverflow找到linux - Unix pipe into ls - Stack Overflow
要使用xargs
不過我真的對這個不太熟

相關資料流重新導向可以看鳥哥的 Linux 私房菜 – 第十章、認識與學習BASH
上面連結備份圖

xargs網路有爬到Linux 系統 xargs 指令範例與教學 - G. T. Wang講解非常清楚

這邊我就簡單紀錄看起來很常用的指令

xargs 在指令輸入
可以接著輸入很多東西

1
2
a b c
def

再按Ctrl+d可以看到螢幕輸出a b c def

xargs簡單小試

xargs ls
再輸入.
再按下Ctrl+D
可以跳出

所以我們find . -mmin -60 | ls -l這段
要改成find . -mmin -60 | xargs ls -l

執行前的確認

-p會問要不要執行這個參數
echo a b c d e f| xargs -p

實用指令

參考Linux 系統 xargs 指令範例與教學 - G. T. Wang

1
find . -name '*.c' | xargs grep 'stdlib.h'

輸出結果
1
2
3
4
5
6
7
8
9
10
./CMake/TestOggTheoraSubsampling.c:#include <stdlib.h>
./Wrapping/Tools/lex.yy.c:#include <stdlib.h>
./Wrapping/Tools/vtkWrapPythonInit.c:#include <stdlib.h>
./Wrapping/Tools/vtkWrapTcl.c:#include <stdlib.h>
./Wrapping/Tools/vtkWrapTclInit.c:#include <stdlib.h>
./Wrapping/Tools/vtkParsePreprocess.c:#include <stdlib.h>
./Wrapping/Tools/vtkWrapText.c:#include <stdlib.h>
./Wrapping/Tools/vtkParseData.c:#include <stdlib.h>
./Wrapping/Tools/vtkParseHierarchy.c:#include <stdlib.h>
./Wrapping/Tools/vtkParseMain.c:#include <stdlib.h>

這個指令感覺很實用