2012-03-23 55 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

方案,但是否有必要到餐桌这么多流程,一个如此简单和快速任务的过程?

相关问题