|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
编译:gcc -o ctrlm ctrlm.c
使用:ctrlm 文件
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-
- int main(int argc, char * argv[])
- {
- char bak[FILENAME_MAX] = {0};
- char cmd1[FILENAME_MAX] = "mv ";
- char cmd2[FILENAME_MAX] = "mv ";
- int lch = 0;
- int cch = 0;
- FILE * fpw = NULL;
- FILE * fpr = fopen (argv [1],"r");
-
- if(2 != argc)
- {
- printf ("Usage: ctrlm <filename>\n");
- exit(1);
- }
-
- strcpy (bak,argv[1]);
- strcat (bak,".ctrlm");
- fpw = fopen (bak,"w");
-
- if( (!fpr) || (!fpw))
- {
- perror ("fopen");
- exit(1);
- }
-
- lch = fgetc(fpr);
- while(!feof(fpr))
- {
- cch = fgetc(fpr);
- if( !((10 == cch) && (13 == lch)) )
- {
- fputc (lch,fpw);
- }
-
- lch = cch;
- }
-
- fclose (fpr);
- fclose (fpw);
- sprintf (cmd1,"mv %s %s.orig",argv[1],argv[1]);
- system(cmd1);
- sprintf (cmd2,"mv %s %s",bak,argv[1]);
- system(cmd2);
-
- return 0;
- }
复制代码
如果想批量的话
- #!/bin/sh
- for i in *
- do
- ctrlm $i
- done
复制代码
只是批量替换了
并没有删除他生成的.orig文件
再研究研究
批量转换文件编码
说明:只要把 iconv 的参数改一下就可以转换相应的编码
-f 后表示源文件编码
-t 后表示目标文件编码
- #!/bin/sh
- for i in *
- do
- iconv -f gb2312 -t utf8 $i > tmp
- cp tmp $i
- rm -f tmp
- done
复制代码 |
|