Orang is a cross-platform command-line tool for:
- searching files, directories and files' content,
- replacing files' content,
- copying files and directories,
- moving files and directories,
- renaming files and directories,
- deleting files, directories or its content,
- synchronizing content of two directories,
- spellchecking files' content,
- executing Regex functions such as match or split
All these commands are powered with .NET regular expression engine.
Orang requires .NET Core Runtime 3.1 or higher.
Orang is distributed as a .NET Core global tool. To install Orang run:
dotnet tool install -g orang.dotnet.cli
To install non-alpha version run:
dotnet tool install -g orang.dotnet.cli --version <VERSION>
To update Orang run:
dotnet tool update -g orang.dotnet.cli
orang [command] [parameters]
For a list of all commands please see documentation.
For a full list of commands, parameters and parameter values run:
orang help [command] [-v d]
For a full manual run:
orang help -m [-v d]
For a full list of .NET regular expressions syntax run:
orang list-patterns
Orang supports matches across multiple lines.
The option -d, --dry-run
gives you opportunity to see the results before you actually replace, rename or delete anything.
The option -t, --highlight
with values m[atch] r[eplacement]
gives you opportunity to see the match and the replacement side-by-side in the output.
Use -r, --replacement <EXPRESSION> cs[harp]
syntax to specify C# inline expression.
The expression is considered to be expression-body of a method with signature string M(Match match)
Use -r, --replacement <CODE_FILE_PATH> cs[harp] f[rom-file]
syntax to specify C# code file.
This code file must contain public method with signature string M(Match match)
.
The more complicated a pattern is, the less readable it becomes when written in one line.
orang find --content "(?x)(?<=(\A|\.)\s*)\p{Ll}\w+\b"
The option f[rom-file]
gives you opportunity to store pattern in a file where it can be formatted.
orang find --content "pattern.txt" from-file
or
orang find -c "pattern.txt" f
Note: Replacement string can be store in a file as well.
Goal: Capitalize first character of a word at the beginning of the text or at the beginning of a sentence.
File pattern.txt
has following content:
(?x) # set multiline option
(?<= # is preceded with
(\A|\.) # beginning of text or a dot
\s* # zero or more white-space characters
)
\p{Ll} # lowercase letter
\w+ # one or more word characters
\b # word boundary (between word and non-word character)
orang replace ^
--extension txt ^
--content "pattern.txt" from-file ^
--replacement "char.ToUpper(match.Value[0]) + match.Value.Substring(1)" csharp ^
--highlight match replacement ^
--display path=omit summary ^
--dry-run
or
orang replace -e txt -c "pattern.txt" f -r "char.ToUpper(match.Value[0]) + match.Value.Substring(1)" cs -t m r -y p=o su -d