shell脚本最好的方法是删除文件不在一对

我有一组成对的文件:

/var/log/messages-20111001 /var/log/messages-20111001.hash 

我有几个这些旋转了,现在我留下了大量的/var/log/messages-201110xx.hash文件没有关联的日志。 我想清理混乱,但我不确定如何删除不属于“对”的文件。 我可以使用bashzsh(或任何LSB工具,真的)。 我需要删除所有没有关联日志的.hash文件。

 /var/log/messages-20111001.hash /var/log/messages-20111002.hash /var/log/messages-20111003.hash /var/log/messages-20111004.hash /var/log/messages-20111005 /var/log/messages-20111005.hash /var/log/messages-20111006 /var/log/messages-20111006.hash 

应该减至:

 /var/log/messages-20111005 /var/log/messages-20111005.hash /var/log/messages-20111006 /var/log/messages-20111006.hash 

 for file in *.hash; do test -f "${file%.hash}" || rm -- "$file"; done 

像这样的东西?

 for f in /var/log/messages-????????.hash ; do [[ -e "${f%.hash}" ]] || rm "$f" done