nu-modules/fs.nu

30 lines
785 B
Plaintext

# batch rename a list<string> 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<list<string>> 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<path>
export def "append dir" [new_dir:string] {
update parent {|p| $p.parent | path join $new_dir }
}
# set the filename of a list<path>
export def "set filename" [new_name:string] {
each { |p| $p.parent | path join $new_name }
}