我的用户目录中有这些 excel 文件:
430_XFRtoDML.xlsx
431_XFRtoDML.xlsx
440_XFRtoDML.xlsx
450_XFRtoDML.xlsx
451_XFRtoDML.xlsx
465_XFRtoDML.xlsx
500_XFRtoDML.xlsx
小路:/home/user
我想编写一个脚本来创建bit_list.txt
下面提到的文本文件。它应该:5.
从该文件中删除 xlsx 扩展名,后跟前3 个数字。例如430_XFRtoDML:5. 430
filenames=`ls *.xlsx`
for eachfile in $filenames
do
echo $eachfile
done
预期输出:
$ cat bit_list.txt
430_XFRtoDML:5. 430
431_XFRtoDML:5. 431
440_XFRtoDML:5. 440
450_XFRtoDML:5. 450
451_XFRtoDML:5. 451
465_XFRtoDML:5. 465
500_XFRtoDML:5. 500
答案1
- 不解析
ls
,而是*.xlsx
直接在 for 循环中使用。 - 利用贝壳参数替换的可能性。
- 使用
printf
而不是echo
。
for file in *.xlsx; do
name="${file%.*}"
num="${file:0:3}"
printf '%s:5. %d\n' "$name" "$num"
done > bit_list.txt