从bash变量中剪切后缀(.csv)

时间:2017-10-03 23:47:23

标签: bash

我需要将日期添加到这些csv文件中。 这是我在目录上获得的。

 ls -1 *Limit*
 comeLimitChanges.csv
 andLimitSnapshot.csv
 playLimitChanges.csv
 withLimitSnapshot.csv
 usChanges.csv
 dannyLimitSnapshot.csv

这是脚本。

 #!/bin/bash
 DATE=$(date +%Y%m%d)
 for i in *Limit*
 do

 ddotcsv="$i.$DATE.csv"
 echo "$i" "$ddotcsv"
 sleep 1
 done

以下是结果 - 我需要将csv从end的后缀中删除,并且不想使用cut。 必须有一种比回声“$ i”更好的方法切-d'。' -f1

 comeLimitChanges.csv.20171002.csv
 andLimitSnapshot.csv.20171002.csv
 playLimitChanges.csv.20171002.csv
 withLimitSnapshot.csv.20171002.csv
 usChanges.csv.20171002.csv
 dannyLimitSnapshot.csv.20171002.csv

我需要这个:

 comeLimitChanges.20171002.csv
 andLimitSnapshot.20171002.csv
 playLimitChanges.20171002.csv
 withLimitSnapshot.20171002.csv
 usChanges.20171002.csv
 dannyLimitSnapshot.20171002.csv

〜 〜

1 个答案:

答案 0 :(得分:1)

只需使用shell parameter expansionsuffix substring removal form, ${var%suffix}删除csv后缀,然后添加日期(我将其重命名为小写变量,因为allcaps通常用于shell中的全局变量):

#!/bin/bash
today=$(date +%Y%m%d)
for i in *Limit*; do
    ddotcsv="${i%csv}$today.csv"
    echo "$i $ddotcsv"
    sleep 1
done