获取不带扩展名的文件名并从文件名中连接模式

获取不带扩展名的文件名并从文件名中连接模式

我的用户目录中有这些 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

  1. 不解析ls,而是*.xlsx直接在 for 循环中使用。
  2. 利用贝壳参数替换的可能性。
  3. 使用printf而不是echo
for file in *.xlsx; do
    name="${file%.*}"
    num="${file:0:3}"
    printf '%s:5. %d\n' "$name" "$num"
done > bit_list.txt

相关内容