【问题标题】:What's the best way to convert Windows/DOS files to Unix in batch?将 Windows/DOS 文件批量转换为 Unix 的最佳方法是什么?
【发布时间】:2010-03-30 18:52:18
【问题描述】:

基本上我们需要更改一组文件的行尾字符。

有没有办法用批处理文件来完成这个?有免费软件实用程序吗?

【问题讨论】:

  • 几十年来一直在与此作斗争的人的建议:不要。不要在不同格式之间转换数据文件,请修复您的程序以接受任何一种格式。
  • 问题在于第三方工具没有。
  • @T.E.D.获胜的唯一方法是不使用此类工具。
  • Oracle 是否接受这两种格式?

标签: unix batch-file dos


【解决方案1】:

【讨论】:

  • 你可能想要一个像terminal$> dos2unix *.extension这样的正则表达式
【解决方案2】:

可以用更短的命令来完成。

    find ./ -type f | xargs -I {} dos2unix {}

【讨论】:

    【解决方案3】:

    您应该能够将trxargs 结合使用来执行此操作。

    至少在 Unix 方面,这应该是最简单的方法。然而,十多年前我曾在 Windows 机器上尝试过这样做,但发现tr 的 Windows 版本正在将我的终结符转换回 Windows 格式。 :-( 但是,我认为在这十年间,这些工具变得更加智能。

    【讨论】:

      【解决方案4】:

      结合 find 与 dos2unix/fromdos 转换文件目录(不包括二进制文件)。

      只需将其添加到您的 .bashrc:

      DOS2UNIX=$(which fromdos || which dos2unix) \
        || echo "*** Please install fromdos or dos2unix"
      function finddos2unix {
      # Usage: finddos2unix Directory
      find $1 -type f -exec file {} \; | grep " text" | cut -d ':' -f1 | xargs $DOS2UNIX
      }
      

      首先,DOS2UNIX 会查找您是否安装了该实用程序,并选择一个使用

      Find 列出所有文件,然后 file 在每个文本文件后附加“:ASCII text”。

      最后,grep 选择文本文件,Cut 删除 ':' 之后的所有文本,而 xargs 使这个 DOS2UNIX 的大命令行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 2016-05-29
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多