30 lines
785 B
Plaintext
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 }
|
|
} |