What have you found for these years?

2009-03-19

xargs 做批次處理?

平常更新 gem 我都是 gem up; gem clean
問題是 rails 常常是不能更新,所以也不能清除的。
此時用 gem up; gem clean 就會把舊版 rails 幹掉...
(結果 rails 2.3.2 升級失敗,因為 facebooker 不支援......)

所以又需要用到手動更新了。這裡假設我需要更新 hpricot 和 nokogiri,
則應該下 gem up hpricot nokogiri; gem clean hpricot nokogiri

因為懶所以去找比較簡單的方式,結果花更多時間,有時候想想真的滿怪的。
總之,最後找到的解法大概是:

echo -n hpricot nokogiri | \
xargs -d ' ' -I zzz gem up zzz \; gem clean zzz

不過這樣 xargs 就必須是 GNU xargs, 因為 -d 好像是 GNU 才有的。
mac 上就要 sudo port install findutils,
然後 xargs 改用 gxargs...

本來我是希望 echo 不要 -n 而 xargs 也不要 -d,
不過這樣一來 gem 吃到的 zzz 會變成 'hpricot nokogiri'
所以就不是兩個名字,而是一個有空白的名字了...

目標是希望不要用到 shell script, 而 sed 之類的也不會用 :s

不知道最跨平台的方式會是什麼...

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0