将两位数的年份转换为四位数

时间:2019-07-07 15:21:46

标签: bash date

将bash中的两位数年份转换为四位数

我有以下格式的文件:test96abcd.TXT 我正在提取两位数的年份:

echo "test96abcd.TXT" | cut -c4-5

我希望做这样的事情:

echo "test96abcd.TXT" | cut -c4-5 | date +%Y

但是它不起作用,更不用说我会遇到... Y2K问题(当它为00时,将不知道它是1900年还是2000年),尽管我可以使用“如果00使用2000“。

但是有没有更优雅的方法可以使用“日期”命令来处理呢?

1 个答案:

答案 0 :(得分:0)

$ cat ../tst.sh
#!/bin/env bash

for old; do
    [[ $old =~ ^([^0-9]*)(([0-9]*).*) ]] || continue
    year=${BASH_REMATCH[3]}
    if (( year > 80 )); then
        cent='19'
    else
        cent='20'
    fi
    new="${BASH_REMATCH[1]}${cent}${BASH_REMATCH[2]}"
    mv -- "$old" "$new"
done

$ ls
test00abcd.txt  test17abcd.txt  test96abcd.txt

$ ../tst.sh *

$ ls
test1996abcd.txt  test2000abcd.txt  test2017abcd.txt