An ultra-fast, user-friendly, and compatible grep replacement
An ultra-fast, user-friendly grep replacement.
Ugrep combines the best features of other grep, adds new things, and surpasses their search speeds.
Includes a TUI, boolean queries (AND/OR/NOT), fuzzy search, hexdumps, searches nested archives (cpio/tar/pax/zip), compressed files (zip/gz/Z/bz2/lzma/xz/lz4/zstd), pdfs, docs, and more
new options --max-size and min-size to search files whose physical size is in the specified MIN and/or MAX range
fix zsh completion syntax error (#528)
update option --ignore-file to ignore files and directories specified in an .gitignore file as an absolute /glob to ignore those matching the glob under its sub-directories (#526)
fix emulation of GNU grep option -z (--null-data) to match newlines (zero bytes internally) with pattern \s (space), which requires non-standard regex behavior internally to include matching zero bytes with pattern \s (#525)
update --ignore-file=FILE to accept a FILE pathname to a non-local gitignore FILE that applies globally to ignore files and directories, similar to --exclude-from=FILE, but with the minor difference that gitignore rules match both files and directories with a single glob (#518 #519 #532)
fix third-party sourced zopen.c library (BSD open source) one-byte read beyond its allocated struct s_zstate state variable in getcode() (#511)
fix -m (--max-count) with context options -A or -C sometimes producing garbled after-context output that may cause a crash in the worst case (#510)
fix reverse sort by date --sort=rchanged and --sort=rcreated not recognized by the TUI at startup (#508)
update ugrep to search named pipe files specified as arguments on the command line instead of skipping them by default, such as process substitutions; also improve Linux special system files /proc and /sys skipping and/or reading and option -z file read error handling to avoid possible pipe fd leaks when thousands of /proc files are searched that produce (expected) read errors (#503)
support option --no-empty while using full grep-emulation mode, i.e. when ugrep is renamed to grep
Thank you for your feedback to help improve ugrep ❤️