我有一个包含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"
以这种格式返回文件列表:
exports/invoice/2014.03547.html: HTML document, ISO-8859 text, with very long lines, with CRLF, LF line terminators
当然不适用于iconv。我需要从这个字符串中提取文件名并通过iconv运行它。
答案 0 :(得分:1)
易于使用awk:
file exports/invoice/* | grep "ISO-8859" | awk -F':' '{print $1}'
答案 1 :(得分:0)
您可以使用以下命令从此字符串中提取文件名:
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
它会返回给你:exports / invoice / 2014.03547.html