使用 dos2unix 将 Windows 文件转换为 Unix 的 shell 脚本



我正在编写一个简单的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并存档文件并像我在这里所做的那样完成其余工作?

您可以使用

tr"模拟"dos2unix

tr -d '15' infile > outfile

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

-n infile outfile

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

相关内容

  • 没有找到相关文章

最新更新