我需要一个 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}$
(注意$
行尾匹配)