检查文件名是否有时间戳

检查文件名是否有时间戳

我需要一个 shell 脚本来检查我的文件名是否有时间戳。如果是,则应继续下一步,否则将时间戳附加到文件名中。

答案1

#!/bin/bash

a="afile.txt"
sometimestamp="$(date +%Y-%m-%d)"
if [[ $a =~ *"${sometimestamp}"* ]]; then 
   echo "Do something"; 
else 
   mv "$a" "${a}.${sometimestamp}"; 
fi

sometimestamp="$(date ....)"脚本中的时间戳可以更改为您感兴趣的时间戳。

答案2

a 的结构2018-02-01由以下正则表达式给出:

[0-9]{4}-[0-9]{2}-[0-9]{2}

在正则表达式匹配中使用它会告诉您文件名是否匹配:

#!/bin/bash
f=filetotest.txt
regex='[0-9]{4}-[0-9]{2}-[0-9]{2}'

if [[ $f =~ $regex ]]; then
    echo "File $f has a timestamp"
else
    mv -i "$f" "$f$(date +%Y-%m-%d)"
fi

如果时间戳必须位于文件名末尾,请改用此正则表达式:

[0-9]{4}-[0-9]{2}-[0-9]{2}$

(注意$行尾匹配)

相关内容