我正在尝试在 Rust 中复制 bash 命令mv `ls | head -5` ./subfolder1/。
这是为了移动目录中的前五个文件,并且它在 shell 中运行良好。我正在使用Command流程生成器,但以下代码在运行时失败:
Command::new("mv")
.current_dir("newdir")
.args(&["`ls | head -5`", "newdir"])
.env("PATH", "/bin")
.spawn()
Run Code Online (Sandbox Code Playgroud)
输出:
Command::new("mv")
.current_dir("newdir")
.args(&["`ls | head -5`", "newdir"])
.env("PATH", "/bin")
.spawn()
Run Code Online (Sandbox Code Playgroud)
与几乎所有此类结构一样,是家族所遵循的Command前端,这意味着它执行一个命令,它不是子 shell,并且不会委托给 shell。forkexec*
如果您想链接多个命令,则必须单独运行它们并手动连接它们,尽管存在提供 shell 样式界面的库(这意味着危险和低效率)。
无法正确理解为什么你会在这里烦恼,所有这些似乎都很容易做到std::fs(并且可能是一小部分std::env)例如
for entry in fs::read_dir(".")?.take(5) {
let entry = entry?;
fs::rename(entry.path(), dest.join(entry.file_name()))?;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
893 次 |
| 最近记录: |