【发布时间】:2013-06-13 12:49:46
【问题描述】:
在 Unix 环境中,我有一个删除一些文件的 bash 脚本:
rm -f foo bar* baz*
我的问题:通配符并不总是返回任何结果。因此,我什至无法删除始终存在的“foo”。写入的输出是“rm: No match”。
一个简单的解决方法是拆分命令:
rm -f foo
rm -f bar*
rm -f baz*
但这是一个糟糕的解决方案。
【问题讨论】:
-
不确定您使用的是什么环境。在我的情况下(Linux/Bash/GNU-tools),它工作得很好:depesz.privatepaste.com/d0b88c536f
-
为什么这么糟糕?另外,您的第一个解决方案在我的系统上运行良好......如果 bar* 或 baz* 不存在,您将收到错误消息,这是预期的行为。
-
我的环境是SunOS。你的确切例子对我不起作用。这很糟糕,因为我希望所有文件都消失。如果有些人一开始不存在,那应该没关系。我知道这可能是“rm”的预期行为。那么有没有其他命令可以简单地做到这一点?
-
如果你只是想让它们不再存在,不管它们当前是否存在,尝试
rm -f foo bar* baz* 2>> /dev/null忽略警告信息... -
我不关心消息,只关心连'foo'都无法删除