From 6a22f123de5799b8cbec59898da85df70de1ded7 Mon Sep 17 00:00:00 2001 From: MikuGeek <56752306+MikuGeek@users.noreply.github.com> Date: Mon, 24 Mar 2025 19:43:11 +0800 Subject: [PATCH] feat: improve handling of cases where num of filenames differs between new and old --- yazi-core/src/mgr/commands/bulk_rename.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/yazi-core/src/mgr/commands/bulk_rename.rs b/yazi-core/src/mgr/commands/bulk_rename.rs index e05b067b..4cf189d2 100644 --- a/yazi-core/src/mgr/commands/bulk_rename.rs +++ b/yazi-core/src/mgr/commands/bulk_rename.rs @@ -52,12 +52,14 @@ impl Mgr { async fn bulk_rename_do(root: PathBuf, old: Vec, new: Vec) -> Result<()> { terminal_clear(TTY.writer())?; - if old.len() != new.len() { - TTY.writer().write_all(b"Number of old and new differ, press ENTER to exit")?; + if old.len() > new.len() { + TTY.writer().write_all(b"Number of old is greater than new, press ENTER to exit")?; TTY.reader().read_exact(&mut [0])?; return Ok(()); } + let new = if new.len() > old.len() { new.into_iter().take(old.len()).collect() } else { new }; + let (old, new) = old.into_iter().zip(new).filter(|(o, n)| o != n).unzip(); let todo = Self::prioritized_paths(old, new); if todo.is_empty() {