Skip to content

CLI to find and execute command for every glob match

License

Notifications You must be signed in to change notification settings

zerodevx/findx-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

findx-cli

CLI to find and execute command for every glob match

Elegant replacement for each-cli, foreach-cli and *nix find -exec command in very little lines of code. Useful for NPM scripts or CI.

  • Cross-platform
  • Concurrency support
  • Continue on error, then exit with code 1
  • Control output of every execution
  • Automatically show task progress in TTY

Install

$ npm i -g findx-cli

Usage

$ findx '**/*.jpg' -- convert {{path}} {{dir}}/{{name}}.png

This searches for all files matching the glob pattern, then runs the provided command against each match.

See below for more usage examples.

Options

Usage: findx <globs> [options] -- [commands...]

CLI to find and execute command for every glob match

Arguments:
  globs                   globs to match
  commands                commands to execute

Options:
  -C, --concurrent <max>  concurrent number of executions (default: 10)
  --log <level>           log level (choices: "stdout", "stderr", "all",
                          "none", default: "all")
  --sh                    run each execution in new shell
  --cd                    change to path directory for each run
  -V, --version           output the version number
  -h, --help              display help for command

Command Templating

Write your command using mustache syntax. The following tags are exposed:

Tag Eg Desc
{{path}} /home/user/dir/file.txt Full path of file
{{root}} / Root
{{dir}} /home/user/dir Directory portion
{{base}} file.txt File name with extension
{{name}} file Name portion
{{ext}} .txt Extension portion

Examples

Untar each tar file in its own directory

$ findx '**/*.tar' --cd -- tar -xvf {{base}}

Ignore some files and run shell-specific commands

$ findx '**/LICENSE !ignored/**' --sh -- 'cd {{dir}} && cat LICENSE'

Dry-run glob matches

$ findx '**/*.{txt,xml}'

Development

Standard Github contribution workflow applies.

Tests

Test specs are in test/spec.js. To run the tests:

$ npm run test

License

ISC

About

CLI to find and execute command for every glob match

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published