0

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

4

3 回答 3

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
于 2013-10-15T09:30:08.090 回答
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选项 with 与date24 小时制时间系统进行比较。

于 2013-10-15T09:58:32.370 回答
0

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

!/bin/bash

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

对于 l 在 $Path

a=$l

b=${a%.xml}

xx=${b: -2}

时间=date +"%I"

如果 [[ $time -eq $xx ]]

然后

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

完毕

退出 0`

于 2013-10-15T18:32:46.933 回答