我有很多.xlsx文件,看起来像XXX-A_2016(最终).xlsx,我正在尝试编写一个shell脚本(bash),它将每个文件批量转换为csv,但也将输出文件重命名为“ XXX-A.csv“,所以我想在我的for循环中需要一个正则表达式来提取输入字符串(filename)的前5个字符。我有xlsx2csv,我正在使用以下循环:
for i in *.xlsx;
do
filename=$(basename "$i" .xlsx);
outext=".csv"
xlsx2csv $i $filename$outext
done
在转换为csv之前,缺少一行会处理文件重命名。
答案 0 :(得分:2)
您可以使用:
for i in *.xlsx; do
xlsx2csv "$i" "${i%_*}".csv
done
"${i%_*}"
会在变量_
末尾$i
之后删除任何内容,结果会给我们XXX-A
。