2012-03-23 9 views
2

現在のディレクトリにあるすべてのファイルに対してindent -kr -i8を実行しようとしています。 Cのプログラマーである私の考えは、プロセス数をfleと同じにすることでした。しかし、私は事がシェルスクリプトで単純化できることを知っています。どんな種類の助けにも感謝します。すべてのファイルをインデントするシェルスクリプトを作成するには現在のディレクトリにあるC/C++ファイル?

+2

いくつかの品質管理を関与させてください - これを行う必要はありません。私の訴えの一つが私に合理的にインデントされていないコードを与えたなら、後でそれらが終わったときに戻ってくるよう伝えるでしょう。私にとって、彼らはコードを考えなかったのです。 –

+0

'indent -kr -i8 *。[ch]'は現在の[GNUインデントドキュメント](http://www.gnu.org/software/indent/manual/indent.html#SEC2)に従っているだけですもっと問題に? – gbulmer

答えて

5

ことができますだけでなく、:

indent -kr -i8 *.c 

あなたが、同時にそれをやってみたかったので、もしあなたが、フォークのプロセスを言及:

for f in *.c 
do 
    indent -kr -i8 $f & 
done 

しかし、あなたは負荷を持っている場合には、CPUをゴミ箱ますのファイルの。だからバッチで:

limit=10 
for f in *.c 
do 
    indent -kr -i8 $f & 
    ((count = count + 1)) 

    if [[ $count -eq $limit ]] then 
     wait 
     count=0 
    fi 
done 
+0

+1答えを段階的に構築するために...おそらくシェルプログラミングに慣れていない人たちのための完全なスクリプトを提供することができます:-) – user1055604

+0

'if'から' count = 0'を見逃しました。今修正されました。 – swampf0etus

4

これにはxargsと組み合わせて、プロセスの最大数と処理する引数(ファイル)の数を指定する特殊な引数を使用します。

find -name '*' -type f -print0 | xargs -0 --max-args=1 --max-procs=8 indent -kr -i8 
0

打ち上げ明示的GnuParallel

とのastyleまたはBCPP Astyle code formatting toolのようなプログラムを呼び出します。しかし、それはとてもシンプルかつ高速タスクのために多くのプロセスをフォークする必要が本当にあるのプロセスを?

関連する問題