shell脚本使用dos2unix将windows文件转换为unix

时间:2017-10-06 10:27:20

标签: python linux shell unix dos2unix

我编写了一个简单的shell脚本,使用dos2unix命令将Windows格式文件转换为Unix格式,当它到达我的文件夹时。

我曾经在脚本中使用iconv并自动化它以将一个编码转换为另一个。但现在我需要使用dos2unix代替iconv

我不希望覆盖原始文件(必须将其存档在archive文件夹中)。这对于iconv很简单;我怎样才能对dos2unix做同样的事情?

这是我的剧本:

cd /myfolder/storage
filearrival_dir= /myfolder/storage
filearchive_dir=/myfolder/storage/archive

cd $filearrival_dir
echo " $filearrival_dir"
for file in File_October*.txt
do
    iconv -f UTF16 -t UTF8  -o "$file.new" "$file"   &&
    mv -f "$file.new" "$file".`date +"%C%y%m%d"`.txt_conv &&
    mv  $file $filearchive_dir/$file
 done

以上查找与File_Oct*.txt匹配的文件,转换为所需的编码,并使用时间戳和最后的_conv重命名。此脚本还将原始文件移动到存档。

如何使用iconv替换上述脚本中的dos2unix并将文件存档并完成其余工作,就像我在这里做的那样?

2 个答案:

答案 0 :(得分:1)

您可以使用dos2unix“模拟” tr

tr -d '\015' infile > outfile

答案 1 :(得分:0)

如果这只是使用dos2unix所以它不会覆盖原始文件,只需使用

-n infile outfile

我的回忆是dos2unix默认写入UTF-8,因此就编码而言,您可能不必采取任何特殊操作。