我正在编写一个简单的外壳脚本,以便在文件到达我的文件夹时使用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,并将文件存档,然后像我在这里所做的那样做剩下的事情?
发布于 2017-10-06 18:33:56
如果这仅仅是关于使用dos2unix,这样它就不会覆盖原始文件,只要使用
-n infile outfile我的记忆是dos2unix在默认情况下编写UTF-8,所以在编码方面您可能不必采取任何特殊操作。
https://stackoverflow.com/questions/46603665
复制相似问题