【发布时间】:2018-04-28 03:23:33
【问题描述】:
我有一个 elixir 程序,它需要以编程方式删除可变数量的这样命名的 PNG 文件。
/path/to/dir/<uuid>-frames-001.png
/path/to/dir/<uuid>-frames-002.png
/path/to/dir/<uuid>-frames-003.png
等等
自然而然,我想出了下面的万能药代码来删除这些文件。
System.cmd("rm", ["/path/to/dir/" <> uuid <> "-frames-*.png"])
我已经看到上面的代码以多种方式失败。首先,我在服务器上运行它并看到了以下堆栈跟踪:
/bin/rm: cannot remove '/path/to/dir/<uuid>-frames-*.png': No such file or directory
我还在控制台会话上运行了这段代码,看到了完全相同的输出。
如果我在 bash 会话中运行以下命令,它可以正常工作!
rm /path/to/dir/<uuid>-frames-*.png
它返回一个0 错误代码并删除预期的文件。似乎 elixir 将 * 解释为文字字符,而不是执行预期的通配符删除。知道如何做到这一点吗?谢谢!
附言
很明显,<uuid> 是一个实际的 uuid,因此不应从字面上解释这个问题的范围。
【问题讨论】: