glob-replace
v0.0.2
Published
Replace patterns across file globs - a thin wrapper around JavaScript's string.replace(RegExp(...), replacement)
Downloads
313
Maintainers
Readme
glob-replace
Replace patterns across file globs - a thin wrapper around JavaScript's string.replace(RegExp(...), replacement).
Usage
npx glob-replace \
--glob <glob> \
--find <pattern> \
--replace <replacement>Examples
# Simple replacement
npx glob-replace \
--glob 'src/**/*.ts' \
--find 'foo' \
--replace 'bar'
# Global replace with backreferences
npx glob-replace \
--glob 'src/**/*.ts' \
--find '(\w+)_(\w+)' \
--replace '$1-$2' \
--flags g
# Multiple globs
npx glob-replace \
--glob 'src/**/*.js' \
--glob 'lib/**/*.js' \
--find 'old' \
--replace 'new'
# From stdin
echo 'hello_world' | npx glob-replace \
--find '(\w+)_(\w+)' \
--replace '$1-$2' \
--stdin
# Dry run (preview changes)
npx glob-replace \
--glob '**/*.md' \
--find 'old' \
--replace 'new' \
--dry-runOptions
| Option | Description |
| ---------------------- | --------------------------------------- |
| -g, --glob <g> | File glob to process (repeatable) |
| -f, --find <pattern> | Pattern to search for |
| -r, --replace <str> | Replacement string |
| --flags <f> | RegExp flags (e.g., g, gi) |
| --literal | Treat pattern as literal string |
| --stdin | Read from stdin, write to stdout |
| --dry-run | Preview without writing |
| --encoding <e> | File encoding (default: utf8) |
| --concurrency <n> | Max parallel files (default: CPU count) |
Notes
- Uses JavaScript
RegExp+String.prototype.replace - Backreferences use
$1,$2, etc. - No flags by default—add
--flags gfor global replacement - At least one
--globis required unless--stdinis used
Shell quoting patterns
Patterns are passed directly to JavaScript RegExp. Most escaping issues come from the shell, not glob-replace.
Single quotes — use by default:
npx glob-replace \
--glob '**/*.txt' \
--find '\bword\b' \
--replace 'replacement'Concatenated quotes — when you need shell expansion:
name="user"
npx glob-replace \
--glob '**/*.conf' \
--find '^'"$name"'\s*=' \
--replace 'found='Here-docs — when patterns contain quotes or span multiple lines:
npx glob-replace \
--glob 'src/**/*.js' \
--find "$(cat <<'FIND'
const\s+(\w+)\s*=\s*'([^']+)'
FIND
)" \
--replace "$(cat <<'REPLACE'
let $1 = '$2'
REPLACE
)"Here-docs are especially useful when matching JavaScript source, where single quotes in patterns conflict with shell quoting.
