# batch rename a list as path export def rename [renamer,--dry-run] { let paths = ($in) let new_paths = ($paths | each { | old_path | $old_path | path parse } | do $renamer) let plan = $paths | zip $new_paths if ($dry_run) { return $plan } $plan | batch rename } # in: list> and rename first to second for every list. export def "batch rename" [] { each { | row | mkdir ($row.1 | path parse | get parent) mv $row.0 $row.1 -i } } # set the parent dir of a list export def "append dir" [new_dir:string] { update parent {|p| $p.parent | path join $new_dir } } # set the filename of a list export def "set filename" [new_name:string] { each { |p| $p.parent | path join $new_name } }