仅将非 utf-8 文件转换为 utf-8
Converting only non utf-8 files to utf-8
我有一组 md
个文件,其中一些是 utf-8 编码的,而另一些不是(实际上是 windows-1256
)。
我只想将非 utf-8 文件转换为 utf-8。
以下脚本可以部分完成工作:
for file in *.md;
do
iconv -f windows-1256 -t utf-8 "$file" -o "${file%.md}..md";
done
我仍然需要从这个过程中排除原始 utf-8 文件,(也许使用 file
命令?)。尝试以下命令来理解我的意思:
file --mime-encoding *
请注意,虽然 file
命令不够智能,无法检测非 utf-8 文件的正确字符集,但在这种情况下它可以区分 utf-8 和非 utf 就足够了-8 个文件。
在此先感谢您的帮助。
您可以使用例如 if
语句:
if file --mime-encoding "$file" | grep -v -q utf-8 ; then
iconv -f windows-1256 -t utf-8 "$file" -o "${file%.md}..md";
fi
如果 grep
没有找到匹配项,它 returns 一个指示失败的状态代码。 if
语句测试状态码
我有一组 md
个文件,其中一些是 utf-8 编码的,而另一些不是(实际上是 windows-1256
)。
我只想将非 utf-8 文件转换为 utf-8。
以下脚本可以部分完成工作:
for file in *.md;
do
iconv -f windows-1256 -t utf-8 "$file" -o "${file%.md}..md";
done
我仍然需要从这个过程中排除原始 utf-8 文件,(也许使用 file
命令?)。尝试以下命令来理解我的意思:
file --mime-encoding *
请注意,虽然 file
命令不够智能,无法检测非 utf-8 文件的正确字符集,但在这种情况下它可以区分 utf-8 和非 utf 就足够了-8 个文件。
在此先感谢您的帮助。
您可以使用例如 if
语句:
if file --mime-encoding "$file" | grep -v -q utf-8 ; then
iconv -f windows-1256 -t utf-8 "$file" -o "${file%.md}..md";
fi
如果 grep
没有找到匹配项,它 returns 一个指示失败的状态代码。 if
语句测试状态码