将bash中的两位数年份转换为四位数
我有以下格式的文件:test96abcd.TXT 我正在提取两位数的年份:
echo "test96abcd.TXT" | cut -c4-5
我希望做这样的事情:
echo "test96abcd.TXT" | cut -c4-5 | date +%Y
但是它不起作用,更不用说我会遇到... Y2K问题(当它为00时,将不知道它是1900年还是2000年),尽管我可以使用“如果00使用2000“。
但是有没有更优雅的方法可以使用“日期”命令来处理呢?
答案 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