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