检测并转换文件列表的编码
Detect and convert encoding for list of files
我有一个包含 ISO-8859 和 UTF8 编码文件的目录。我想将所有 ISO 文件转换为 UTF8 编码,并保持 UTF8 文件不变。到目前为止,我得到了这个:
for isoFile in `file exports/invoice/* | grep "ISO-8859"`; do iconv -f iso-8859-1 -t utf-8 "$isoFile" -o "$isoFile"; done
问题是 file exports/invoice/* | grep "ISO-8859"
returns 这种格式的文件列表:
exports/invoice/2014.03547.html: HTML document, ISO-8859 text, with very long lines, with CRLF, LF line terminators
这当然不适用于 iconv。我需要从此字符串中提取文件名并通过 iconv 运行它。
您可以使用以下命令从此字符串中提取文件名:
cut -d' ' -f1 //to select first column
rev | cut -c 2- | rev //to remove ':' from the end of the name
所以提取文件名的整个命令是这样的:
file exports/invoice/* | grep "ISO-8859" | cut -d' ' -f1 | rev | cut -c 2- | rev
它会 return 给你:exports/invoice/2014.03547.html
awk 易于使用:
file exports/invoice/* | grep "ISO-8859" | awk -F':' '{print }'
我有一个包含 ISO-8859 和 UTF8 编码文件的目录。我想将所有 ISO 文件转换为 UTF8 编码,并保持 UTF8 文件不变。到目前为止,我得到了这个:
for isoFile in `file exports/invoice/* | grep "ISO-8859"`; do iconv -f iso-8859-1 -t utf-8 "$isoFile" -o "$isoFile"; done
问题是 file exports/invoice/* | grep "ISO-8859"
returns 这种格式的文件列表:
exports/invoice/2014.03547.html: HTML document, ISO-8859 text, with very long lines, with CRLF, LF line terminators
这当然不适用于 iconv。我需要从此字符串中提取文件名并通过 iconv 运行它。
您可以使用以下命令从此字符串中提取文件名:
cut -d' ' -f1 //to select first column
rev | cut -c 2- | rev //to remove ':' from the end of the name
所以提取文件名的整个命令是这样的:
file exports/invoice/* | grep "ISO-8859" | cut -d' ' -f1 | rev | cut -c 2- | rev
它会 return 给你:exports/invoice/2014.03547.html
awk 易于使用:
file exports/invoice/* | grep "ISO-8859" | awk -F':' '{print }'