利用 Shell 脚本自动化转换 XLS 文件为 CSV 格式:逐行指南
2024-03-18 09:17:02
使用 Linux Shell 脚本自动转换文件夹中的所有 XLS 文件为 CSV 格式
对于忙碌的数据分析师或数据处理人员来说,经常需要将大量 .xls
文件转换为 .csv
格式。手动处理这些文件既耗时又容易出错。本教程将介绍如何使用 Linux Shell 脚本来自动完成此任务,只需几行代码即可。
使用 find 命令查找 XLS 文件
第一步是查找要转换的 .xls
文件。为此,我们将使用 find
命令:
find /path/to/directory -name "*.xls"
此命令将递归搜索指定目录(/path/to/directory
)及其所有子目录,查找所有以 .xls
结尾的文件。它将返回这些文件的路径列表,每个路径一行打印。
使用 while 循环迭代 XLS 文件
接下来,我们将使用 while
循环来迭代每个 .xls
文件:
while read filename; do
# 处理 $filename
done < <(find /path/to/directory -name "*.xls")
此循环将逐行读取 find
命令的输出,并将每一行分配给变量 $filename
。这样,我们就可以逐个访问每个 .xls
文件的路径。
使用 xls2csv 转换 XLS 文件为 CSV 文件
现在,我们可以使用 xls2csv
程序将每个 .xls
文件转换为 .csv
格式。xls2csv
是一个命令行工具,可以将 Microsoft Excel 文件转换为 CSV 文件。
要使用 xls2csv
,我们只需将 .xls
文件的路径作为第一个参数,.csv
文件的路径作为第二个参数:
xls2csv "$filename" "${filename%.*}.csv"
此命令使用 $filename
作为输入文件,并从文件名中去掉 .xls
扩展名(使用 "${filename%.*}"
),然后附加 .csv
扩展名作为输出文件。
完整的脚本
将上面的步骤组合在一起,我们得到以下完整的 Shell 脚本:
#!/bin/bash
find /path/to/directory -name "*.xls" | while read filename; do
xls2csv "$filename" "${filename%.*}.csv"
done
使用说明
要使用此脚本,请将其保存到一个文件(例如 xls2csv_all.sh
),并使其可执行:
chmod +x xls2csv_all.sh
然后,运行脚本:
./xls2csv_all.sh
此脚本将查找指定目录中所有 .xls
文件,并使用 xls2csv
程序将它们转换为 .csv
格式。
常见问题解答
- 可以使用此脚本转换子目录中的 XLS 文件吗?
是的,只需将 find
命令中的路径更改为要搜索的子目录即可。
- 如何自定义输出 CSV 文件的名称?
您可以使用 filename%.*}
部分来指定输出 CSV 文件的自定义名称。例如,以下命令将输出带有前缀 converted_
的 CSV 文件:
xls2csv "$filename" "converted_${filename%.*}.csv"
- 此脚本适用于所有 Excel 文件版本吗?
否,xls2csv
程序可能不支持所有 Excel 文件版本。请参阅 xls2csv
文档以获取详细信息。
- 此脚本可以在 Windows 上使用吗?
否,此脚本专为 Linux 系统设计。
- 如果我想使用其他程序(例如 LibreOffice Calc)转换文件,该如何修改脚本?
您可以轻松地将 xls2csv
替换为您选择的程序。例如,使用 LibreOffice Calc:
libreoffice --headless --convert-to csv "$filename" --outdir /path/to/output/directory