Filename Manipulating [Examples]
Being able to have different names for the source items and their destination items arises as a vital need in some use cases. dt-cli
offers this utility via a convenient and versatile way, with the power of regular expressions.
Background
This is not new. GNU Stow has an option --dotfiles
, which explains this in man:stow(8):
--dotfiles
:Enable special handling for "dotfiles" (files or folders whose name begins with a period) in the package directory. If this option is enabled, Stow will add a preprocessing step for each file or folder whose name begins with "dot-", and replace the "dot-" prefix in the name by a period (.). This is useful when Stow is used to manage collections of dotfiles, to avoid having a package directory full of hidden files.
dt-cli
's filename manipulating capability functions in a similar way, but in a much more powerful way: you can specify arbitrary renaming rules, thanks to the flexibility of regular expressions; you can also specify arbitrary number of renaming rules, multiple defined rules will apply to your items one-after-another.
rename
Renaming rules are defined in the rename
array. A renaming rule is represented by a 2-tuple in the config file, where the first element is a regular expression pattern and the second element is a substitution rule. To achieve an identical behaviour as the --dotfiles
option with GNU Stow, a renaming rule can be set in global
section of the config file as:
[global]
rename = [
[
"^dot-", # "pattern"
".", # "substitution rule"
],
# Multiple renaming rules are applied sequentially, with the previous rule's
# output being the input of the current rule.
]
Since dt-cli
's renaming capability is powered by regular expressions, it also supports regular expression features like capturing groups, which allows infinitely flexible filename manipulation. More examples can be found in the hands-on guide.