Origin: xargs 應用介紹
今天介紹的指令是 xargs,這個指令並不常見,卻很實用
它的工作是將上一個程式輸出的結果轉成下一個程式的參數輸入
範例:
假設有一個目錄如下 (這個樹狀目錄架構是使用 tree 指令所產生的)
.
|-- Makefile
|-- VERSION
|-- VERSION.bak
|-- inc
| |-- fork.h
| |-- main.h
| `-- main.h.bak
`-- src
|-- common_lib
| |-- dl_math.c
| |-- dl_math.c.bak
| |-- dl_string.c
| `-- dl_string.c.bak
|-- fork.c
|-- fork.c.bak
`-- main.c
這是一個程式開發的專案目錄,如果我想要將所有的*.bak 一次清除,那麼該怎麼做呢? 首先我得先找出所有的 *.bak,可以使用 find 指令
find . -iname "*.bak"
可以得到以下的結果
./VERSION.bak
./inc/main.h.bak
./src/fork.c.bak
./src/common_lib/dl_string.c.bak
./src/common_lib/dl_math.c.bak
接下來就是關鍵了
你會怎麼做呢?
1) 把結果使用">" 導向檔案,全部加入 rm (linux 的刪檔指令)嗎?
2) 還是把這些輸出內容變成 rm 的輸入呢?
第一種方式是愚公移山…如果有幾千個檔案…可能會很辛苦~
第二種方式就是使用xargs 來實現我們的理想
find . -iname "*.bak" | xargs rm