2012-03-23 23 views
2

我想在當前目錄中的所有文件上運行indent -kr -i8。作爲一名C程序員,我想到的想法是分叉進程等於文件數量,對其執行執行。但我知道事情可以通過shell腳本簡化。任何形式的幫助表示讚賞。如何編寫一個縮進當前目錄中所有文件C/C++文件的shell腳本?

+2

請參與一些質量控制 - 你不應該這樣做。如果我的一項指控給我的代碼沒有合理縮進,我會告訴他們在完成後再回來。對我來說,他們覺得他們沒有想到代碼。 – 2012-03-23 12:40:33

+0

'indent -kr -i8 *。[ch]'應該按照當前的[GNU indent文檔](http://www.gnu.org/software/indent/manual/indent.html#SEC2)工作更多的問題? – gbulmer 2012-03-23 13:02:51

回答

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用於遞增地構建答案......也許你可以爲那些不熟悉shell編程的人提供一個完整的腳本...... :-) – user1055604 2012-03-23 16:54:18

+0

我錯過了'if'中的'count = 0',哎呀。現在修復。 – swampf0etus 2012-03-23 17:05:15

4

使用find爲此,並結合xargs及其指定最大進程數的特殊參數以及要爲其處理的參數(文件)數量。

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

推出即明確要求的astyle一樣BCPP或 Astyle code formatting tool與GnuParallel

方案,但是否有必要到餐桌這麼多流程,一個如此簡單和快速任務的過程?

相關問題