我生成了一个脚本,该脚本可循环访问多个.csv文件,并将相关文件转换为UTF-8:
#!/bin/bash
cd /home/user/prod/
charset="text/plain; charset=iso-8859-1"
for file in *.csv; do
if [[ $(file -i "$file") == "$file: $charset" ]]; then
iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file.new";
mv -f "$file.new" "$file";
fi
done
那行得通,但是我真正想要的是遍历驻留在不同路径中的文件.我试图从设置一个路径开始(而不是定义当前目录),但无法使其正常工作:
#!/bin/bash
path="/home/user/prod"
charset="text/plain; charset=iso-8859-1"
for file in "$path/*.csv"; do
if [[ $(file -i "$file") == "$file: $charset" ]]; then
iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file.new";
mv -f "$file.new" "$file";
fi
done
设置路径的最佳方法是什么?如何处理驻留在不同路径中的文件(相同扩展名)?
解决方法:
您已经接受@Charles Duffy的答案,但是(如果我很好理解),您的问题是关于文件位于不同目录中的,因此,如果您需要在多个目录中使用多个csv文件,则可以使用以下代码段:
# array containing the different directories to work with
pathDir=("/foo/bar/dir1" "/buzz/fizz/dir2")
for dir in "${pathDir[@]}" # For each directory
do
for file in "$dir/"*.csv; do # For each csv file of the directory
if [[ $(file -i "$file") == "$file: $charset" ]]; then
iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file.new";
mv -f "$file.new" "$file";
fi
done
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。