我正在嘗試mv `ls | head -5` ./subfolder1/在 Rust 中復制 bash 命令。
這意味著移動目錄中的前五個檔案,并且在 shell 中運行良好。我正在使用Command流程構建器,但以下代碼在運行時失敗:
Command::new("mv")
.current_dir("newdir")
.args(&["`ls | head -5`", "newdir"])
.env("PATH", "/bin")
.spawn()
輸出:
mv: cannot stat cannot stat '`ls | head -5`': No such file or directory
uj5u.com熱心網友回復:
與幾乎所有此類結構一樣,它Command是家族fork后面的前端exec*,這意味著它執行一個命令,它不是子shell,也不會委托給shell。
如果要鏈接多個命令,則必須單獨運行它們并手動連接它們,盡管存在提供 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()))?;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/406099.html
標籤:
上一篇:少-一次搜索多個檔案
