我想从文件夹中的PNG图像名称中删除_
:
use std::error::Error;
use std::fs;
use std::path::Path;
fn main() -> Result<(), Box<dyn Error>> {
let dir = Path::new("/home/alex/Desktop");
for entry in fs::read_dir(dir)? {
let entry = entry?;
let path = entry.path();
if path.is_file() && path.extension().unwrap_or_default() == "png" {
if let Some(Some(new_path)) = path
.file_name()
.map(|name| name.to_str().map(|s| s.replace("_", "")))
{
fs::rename(path, new_path)?;
}
}
}
Ok(())
}
代码“删除”了png文件而不是重命名它们。我怀疑这是因为它们被重命名到了一个不存在的位置。但是我不太确定如何修改代码来修复这个问题。
实时代码:https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=323f901e4f0f4c99dbf5affeb0127991
1条答案
按热度按时间zrfyljdw1#
您当前的代码只是使用文件名作为新路径,您要做的是使用
with_path_name
将path
的文件名替换为新文件名: