orang icon indicating copy to clipboard operation
orang copied to clipboard

Search, replace, rename and delete directories, files and its content using the power of .NET regular expressions.

Orang

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.

Requirements

Orang requires .NET Core Runtime 3.1 or higher.

How to Install

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

How to Use

orang [command] [parameters]

Basic Commands

  • find
  • replace
  • rename
  • delete
  • spellcheck

For a list of all commands please see Orang Command-Line Reference

How to Learn

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

Features

Single match can span over multiple lines

Orang supports matches across multiple lines.

Dry run

The option -d, --dry-run gives you opportunity to see the results before you actually replace, rename or delete anything.

Display match and replacement side-by-side

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 C# code to compute replacements

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).

Load pattern from a file

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.

Sample Command

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

Capitalize first character in a sentence

Links