• 做linux开发的,一般还是在windows上装个虚拟机,在windows上开发, 所以就会出现dos文件与unix文件格式不一致,当windows上的文件在linux上用的时候,经常在每行的末尾会出现^M ,这会导致makefile或者其他文件...

    做linux开发的,一般还是在windows上装个虚拟机,在windows上开发, 所以就会出现dos文件与unix文件格式不一致,当windows上的文件在linux上用的时候,经常在每行的末尾会出现^M ,这会导致makefile或者其他文件无法正常使用,所以只能通过手动来去除这些^M, 参考了一些资料, 总结如下几种方法:

    1、用SED来去除:

    sed -'s/^M//g' filename

    其中^M是按ctrl+V+M得出,这句sed脚本表示替换^M为空并保存到原文件。

    2、用dos2unix这个小工具:

    dos2unix是linux带的,一般都带这个工具吧,如果没有,那就没法用了,

    $ dos2unix filename

    就能把^M给除掉

    3 、用vi打开这个文件来设置

    $   vi  filename.txt        
        :set fileformat
    =unix
        :w   

    这样也能把^M给去掉,

    所以目前我所知道的有以上几种方法,够用了吧,嘿嘿。。。

    展开全文
  • 1、windows使用dos模式结尾,unix采用unix格式结尾。 find -name "*.h" -o -name "*.cpp" | xargs dos2unix 2、windows一般使用GBK编码格式,linux采用utf-8格式。解决办法: #!bin/bash if [ -f "tmp.log" ]; then...

    1、windows使用dos模式结尾,unix采用unix格式结尾。

    find  -name "*.h" -o -name "*.cpp" | xargs dos2unix

    2、windows一般使用GBK编码格式,linux采用utf-8格式。解决办法:

    #!bin/bash
    if [ -f "tmp.log" ]; then
        rm tmp.log
    fi
    find -name "*.cpp" -o -name "*.h" -o -name "*.jce"|xargs file -i|grep 8859|awk '{print $1}' >> tmp.log
    cat tmp.log | while read line
    do
        var=${line:0:(${#line}-1)}
        echo $var
        iconv -f GBK -t utf-8  $var -o $var'.bak' && rm $var && mv $var'.bak' $var
    done
    rm tmp.log

    3、综合性语句:技能把dos转换为unix又能把GBK格式转换为utf-8格式

    #!bin/bash
    pwd
    find -name "*.cpp" -o -name "*.h" | xargs file -i|grep 8859|awk '{print $1}' >> tmp.log
    cat tmp.log | while read line
    do
        var=${line:0:(${#line}-1)}
        echo $var
        iconv -f GBK -t utf-8  $var -o $var'.bak' && rm $var && mv $var'.bak' $var
    done
    rm tmp.log


    find  -name "*.h" -o -name "*.cpp"|xargs file| grep CRLF| awk '{print $1}' >> tmp.log
    cat tmp.log | while read line
    do
        var=${line:0:(${#line}-1)}
        echo $var
        dos2unix $var
    done
    rm tmp.log

    展开全文
  • 使用git 的时候碰到git将unix换行符转换为windows换行符的问题,需要使用dos2unix命令将文件转换为unix格式。dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)...

    使用git 的时候碰到git将unix换行符转换为windows换行符的问题,需要使用dos2unix命令将文件转换为unix格式。

    dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。

    语法:

    dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
    

    选项

    
     1. -k:保持输出文件的日期不变 
     2. -q:安静模式,不提示任何警告信息
     3. -V:查看版本
     4. -c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII
     5. -o:写入到源文件
     6. -n:写入到新文件
    

    参数

    参数:需要转换到的文件。

    实例
    最简单的用法就是dos2unix直接跟上文件名:

    dos2unix file 

    如果一次转换多个文件,把这些文件名直接跟在dos2unix之后。(注:也可以加上-o参数,也可以不加,效果一样)

    dos2unix file1 file2 file3 
    dos2unix -o file1 file2 file3 

    上面在转换时,都会直接在原来的文件上修改,如果想把转换的结果保存在别的文件,而源文件不变,则可以使用-n参数。

    dos2unix oldfile newfile 

    如果要保持文件时间戳不变,加上-k参数。所以上面几条命令都是可以加上-k参数来保持文件时间戳的。

    dos2unix -k file
    dos2unix -k file1 file2 file3
    dos2unix -k -o file1 file2 file3
    dos2unix -k -n oldfile newfile

    以上是转换单个文件,如果要转换目录或文件夹的话,请往下看:


    Linux本身提供了dos2unix和unix2dos这两个命令来实现windows和linux文件的转换,

    但是。dos2unix和unix2dos本身没有提供递归也就是批量修改的方式,这样一来我们就需要借助于xargs命令了

    xargs的命令的作用就是将参数列表转换成小块分段传递给其他命令,借助于xargs,我们可以很简单的实现批量替换;

    这里假设我需要替换的文件所在目录为 public/components目录下。

    如果批量替换public/components 目录下的所有文件使用如下命令:

    find public/components/ -name "*" | xargs dos2unix

    其中,”*”号表示所有文件。

    要更改文件格式的后缀为.py ,那么借助于下面的命令就可以轻松的实现批量替换格式:
    批量替换为linux文件格式:

    sudo find public/components/ -name "*.py" | xargs dos2unix

    批量替换为dos文件格式:

    sudo find public/components/ -name "*.py" | xargs unix2dos

    优点:批量替换,工作量小, 总的来说,方法二借助于 管道符和xargs来实现的批量命令,将方法二修改一下就可以实现很多的批量操作,

    比如:

    1.批量删除整个linux系统中后缀为.tmp的文件;那么命令可以这么写:

    sudo find /home/test -name "*.tmp" | xargs rm -f

    2.删除整个linux系统中与apache相关的文件:

    sudo find /home/test -name "*apache" | xargs rm -rf

    Author:leedaning
    本文地址:http://blog.csdn.net/leedaning/article/details/53024290

    展开全文
  • windows系统下的文件格式unix下不同,使用ftp等软件上传到unix服务器上的文件都需要转换为unix格式后,才可以使用; 使用 dos2unix $filename $filename 命令就可以转换,但是一个一个文件的转换太慢 【解决方法...

    【问题描述】

    windows系统下的文件格式和unix下不同,使用ftp等软件上传到unix服务器上的文件都需要转换为unix格式后,才可以使用;

    使用 dos2unix $filename $filename 命令就可以转换,但是一个一个文件的转换太慢

    【解决方法】

    经验证,可以使用以下方法进行批量转换当前目录下的所有文件

    for x in $(find . -TYPE f);do dos2unix $x $x;done

     

    转载于:https://www.cnblogs.com/finalsatan/p/4940280.html

    展开全文
  • Windows格式文件转成Unix格式文件/* win2unix */#include "stdio.h"#include "stdlib.h"#include "conio.h"#include "string.h"int main(int argv, char * args[]){ FILE *fp1,*fp2; char c; ...

    Windows格式的文件转成Unix格式的文件

    /* win2unix */
    #include "stdio.h"
    #include 
    "stdlib.h"
    #include 
    "conio.h"
    #include 
    "string.h"

    int 
    main(int argvchar * args[]){

      FILE *fp1,*fp2;
      char c;
      char s[100];

      if(argv<2){
        printf("Usage: win2unix input-file-name [output-file-name]");
        return 1;
      }

      if((fp1=fopen(args[1],"rb"))==NULL){
        printf("Error: Fail to open %s.",args[1]);
        return 1;
      }

      if(argv==2){
        sprintf(s,"u_%s",args[1]);
      }
      else{
       sprintf(s,"%s",args[2]);
       if(strcmp(s,args[1])==0){
          printf("Error: Output file name must not be same to that of the input file.");
          fclose(fp1);
          return 1;
       }
      }
      fp2=fopen(s,"wb");

      while(1){
        c=fgetc(fp1);
        if(feof(fp1)!=0){
          break;
        }
        if(c!='/r'){
          fputc(c,fp2);
        }
      }

      fclose(fp1);
      fclose(fp2);
      return 0;

    }

    附:如果在Unix下,只消几行语句就可以解决问题:

    #!/bin/sh
    tr -d '/015' < "$1" >temp.$$
    mv temp.$$ "$1"

    展开全文
  • 1 在ubuntn系统安装转换工具 $ apt-get install``dos2unix 2 用vim打开要转换的文件,l例如test.c,在底行模式执行如下命令,就可以将dos格式文件转换unix格式文件 :!dos2unix test.c ...
  • 执行shell脚本时提示bad interpreter:No such file or directory的解决办法 问题原因: 因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见...可以有很多种办法看这个文件是DOS格式的还是UNIX格...
  • 在Windows系统下编辑的文件,换行符回车的格式为'\r\n',在linux系统下,... 在Windows环境下,用ultraedit或者notepad plus都有相应的选项可以将Windows下的文本格式文件转换成unix格式文件。比如:notepad plus中
  • DOS/Windows和Linux/Unix文件换行回车格式不同,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX 文本只有一个换行。把Dos/Windows下的文件移至Linux/Unix系统虽然很多程序不...
  • 常识:Unix及类Unix系统里,每行结尾只有换行“\n”,Windows系统里面,每行结尾...利用Linux下的vim编辑器,可以方便的在dos文件、unix文件之间进行切换,且可以便利的去除恼人的^M符。 vim file然后, :s
  • 例如有一个文件 convert.sh 在windows上编辑过(dos文本格式),然后上传到了linux系统。...会输出 该文件的文件格式 ,例如:fileformat=dos 如果要将其格式转换成 unix 可以输入命令 :set ff...
  • 将windows文本格式转换为UNIX格式 1、使用sed命令来进行转换,如下:  sed -e ’s,^M,,g’ textfile  其中^M的输入方法是Ctrl+V, Ctrl+M    对于批量文件的处理,可以用下面的命令:  for f in `echo *.c`; ...
  • 在windows顺手用记事本打了一个程序,拷贝到linux发现每一行后面都出现^M这个字符。今天刚好把vim编辑器的tutor看完,发现vi里面有一招可以解决这个问题。:#,#s/string1/string2/g#,# 表示从第几行到第几行之间s ...
  • cd/cygdrive/c: No such file or directorycd/cygdrive/c: ...这个问题可能是dos文件格式引起的 linux转成uinx格式的命令是 vi 文件之后 :set ff? //查看是什么格式 :set ff=unix 转成uinx格式 ...
  • Linux更换文件格式

    2017-02-09 15:39:48
    1、 用vi命令打开要替换的文件  2、直接输入: :set ff=unix 表示设置文件格式unix格式
  • 参考... [root@test10 shell]# cat dos2Unix.sh #!/bin/bash for file in `find /usr/src/linux/ -name Kconfig.*` do vi +':w ++ff=unix' +':q' ${file} do...
  • (fileformat)可以查看文件格式,使用set ff=dos(unix)可以设置文件格式 2.使用sed处理(来至http://www.cnblogs.com/yangyh/archive/2011/08/12/linux.html) Sed命令笔记 Tag:linux sed 正则 替换 DOS/...
  • 用sed实现unix2doc或doc2unix
1 2 3 4 5 ... 20
收藏数 46,970
精华内容 18,788