从文件名中获取子字符串,并使用Shell脚本与当前日期/时间戳的小时(HH)进行比较

时间:2013-10-15 03:40:53

标签: shell date

假设我有一个文件名ABC.20131212.XX.xml,其中XX是HH(小时)。我需要获取XX的值并将其与系统时间的当前小时进行比较。如果它相等,那么,我将重命名该文件。因此,如果是12点(中午12点),我应该使用ABC.20131212.12.xml获取文件并重命名。如何在shell脚本中实现比较?

3 个答案:

答案 0 :(得分:0)

以下是如何在不启动外部命令的情况下开始纯粹的bash:

a=ABC.20131212.XX.xml
# Strip off .xml
b=${a%.xml}
# Extract last 2 characters
xx=${b: -2}

,小时可以用

获得
time=`date +'%H'`

可以像这样进行比较和重命名

if [[ $time -eq $xx ]]
then
   mv something somewhere
fi

答案 1 :(得分:0)

以下是使用Bash内置正则表达式匹配的方法:

file=foobar.11.xml
if [[ $file =~ .*([0-9][0-9])\.xml ]]; then
    if [[ "${BASH_REMATCH[1]}" -eq $(date "+%I") ]]; then
        # $file has current hour in its name
    fi
fi

使用+%H选项与date进行比较,以便与24小时制进行比较。

答案 2 :(得分:0)

以下是您可以使用的脚本(相应地更改路径): `

!/斌/庆典

路径= /你/路径/这里/ *

for $ in $ Path

DO

α= $升

B = $ {一%的.xml}

xx = $ {b:-2}

时间= date +"%I"

if [[$ time -eq $ xx]]

然后

mv $l /New/file/name/path/newfile.txt

网络连接

完成

退出0`