私のユーザーディレクトリには、次の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