如何使用模式检查文件是否存在?
我有一个包含完整 svn 备份的目录,其命名如下:
name1.20100412.r9.bz2
name1.20100413.r10.bz2
name2.20100411.r101.bz2
name3.20100412.r102.bz2
...
我需要仅使用名称和修订号来检查备份文件是否存在。我尝试了 test
但没有成功:
if [ -e name1.*.r9.bz2 ]; then echo exists; fi
[: too many arguments
How can I test if file isn’t?
I have a directory with full svn backups named like this:
name1.20100412.r9.bz2
name1.20100413.r10.bz2
name2.20100411.r101.bz2
name3.20100412.r102.bz2
...
I need to check if a backup file exists using name and revision number only. I tried test
but it didn't work:
if [ -e name1.*.r9.bz2 ]; then echo exists; fi
[: too many arguments
How can I test if file exists?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
您可以执行以下操作:
或
编辑:添加
shopt -s nullglob
。You could do:
or
Edit: Added
shopt -s nullglob
.只需检查 shell 是否扩展了该模式即可。这适用于
sh
和bash
:PS 如果模式本身可以是有效的文件名,则可以添加
-e
检查:Just check if the shell has expanded the pattern. This works in
sh
andbash
:P.S. If the pattern itself can be a valid filename, you can add a
-e
check:尤金·伊的答案略有不同:
A slight variation on eugene y's answer:
我会用:
I would use:
尝试类似的东西
Try something like
相关帖子:
检查 shell 脚本中是否存在带有通配符的文件
似乎有一个很好的答案,使用 ls 的返回值。
Related post:
Check if a file exists with wildcard in shell script
It seems to have a good answer, using the return value of ls.