0

我正在编写一个简单的 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并存档文件,然后像我在这里做的那样做其余的事情?

4

2 回答 2

2

您可以dos2unix使用tr.

tr -d '\015' infile > outfile

于 2019-12-21T05:27:50.043 回答
0

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

-n infile outfile

我记得dos2unix默认情况下会写入 UTF-8,因此就编码而言,您可能不必采取任何特殊措施。

于 2017-10-06T10:33:56.193 回答