批量将Windows/DOS文件转换为Unix的最佳方法是什么?

4

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

有没有批处理文件的方法实现这个?是否有免费的工具可用?


有一个经验丰富的人给出的建议:不要这样做。不要在不同格式之间转换数据文件,而是修复你的程序以接受任何一种格式。 - Dour High Arch
问题出在那些不支持的第三方工具上。 - T.E.D.
@T.E.D. 获胜的唯一方法是不使用这样的工具。 - Dour High Arch
Oracle接受这两种格式吗? - Pato Moschcovich
4个回答

8

你可能需要一个正则表达式,像这样 terminal$> dos2unix *.extension - rlb.usa

2
可以使用更短的命令来完成。
    find ./ -type f | xargs -I {} dos2unix {}

0

使用find和dos2unix/fromdos结合起来,将一个文件夹中的文件转换为Unix格式(不包括二进制文件)。

只需将以下内容添加到您的.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会列出所有文件的列表,然后在每个文本文件后面附加“:ASCII文本”。

最后,grep选取文本文件,Cut删除“:”后面的所有文本,xargs将其组合成一个大的命令行,供DOS2UNIX使用。


0

你应该能够结合使用trxargs来完成这个任务。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接