Shell utility resembling findutils, small, extendable and windows-friendly
Project description
pyfindlib
Shell utility resembling findutils, small, extendable and windows-friendly
Install
pip install pyfindlib
Use
usage: pyfind [PATHS] [OPTIONS] [CONDITIONS] [-async] [-exec cmd args {} ;] [-delete] [-print]
finds files and dirs that satisfy conditions (predicates) and executes action
options:
-maxdepth NUMBER walk no deeper than NUMBER levels
-output PATH output to file instead of stdout
-append append to file instead of rewrite
-abspath print absolute paths
-async execute asyncronously (do not wait for termination)
-conc NUMBER concurrency limit for -async -exec,
defaults to number of cpu cores
-trail print trailing slash on directories
-cdup NUMBER print (or perform action on) parent path (strip NUMBER
trailing components from path)
-first NUMBER print (or perform action on) first NUMBER found items and stop
-xargs execute command once with all matched files as arguments
actions:
-delete delete matched file
-exec execute command(s)
-print print matched paths to output (default action)
-stat print matched paths with file size and modification date
-touch touch file (set mtime to current time)
-gitstat print git status summary
predicates:
-type d is directory
-type f is file
-mtime DAYS if DAYS is negative: modified within DAYS days,
if positive modified more than DAYS days ago
-ctime DAYS same as -mtime, but when modified metadata not content
-mmin MINUTES if MINUTES is negative: modified within MINUTES minutes,
if positive modified more than MINUTES minutes ago
-mdate DATE1 [DATE2] modified at DATE1 (or between DATE1 and DATE2)
-cmin MINUTES same as -mmin, but when modified metadata not content
-newer PATH/TO/FILE modified later than PATH/TO/FILE
-newermt DATETIME modified later than DATETIME
-newerct DATETIME same as -newermt but when modified metadata not content
-name PATTERNS filename matches PATTERN (wildcard)
-iname PATTERNS same as -name but case insensitive
-path PATTERNS file path matches PATTERN
-ipath PATTERNS same as -path but case insensitive
-grep PATTERN file content contains PATTERN
-igrep PATTERN same as -grep but case insensitive
-bgrep PATTERN same as -grep but PATTERN is string of hex values
-docgrep PATTERN grep odt and ods files for PATTERN
-xlgrep ...ARGS grep xls files for values, each arg is one of: address range (c1:c10),
numeric value (40.8), numeric range (40..41) or string (foo)
-cpptmp temporary cpp files (build artifacts - objects, generated code)
-gitdir directory with .git in it
predicates can be inverted using -not, can be grouped together in boolean expressions
using -or and -and and parenthesis
binds:
{} path to file
{path} path to file
{name} name with extension
{ext} extension
{basename} name without extension
{dirname} directory name
examples:
pyfind -iname *.py -mmin -10
pyfind -iname *.cpp *.h -not ( -iname moc_* ui_* )
pyfind -iname *.h -exec pygrep -H class {} ;
pyfind -iname *.o -delete
pyfind -iname *.py -xargs -exec pywc -l ;
pyfind D:\dev -iname node_modules -type d -cdup 1
pyfind -iname *.dll -cdup 1 -abspath | pysetpath -o env.bat
pyfind -iname *.mp3 -conc 4 -async -exec ffmpeg -i {} {dirname}\{basename}.wav ;
pyfind -mdate 2024-07-25
pyfind -mdate 2024-07-25 2024-08-21
pyfind -newer path/to/file
pyfind D:\dev -maxdepth 2 -gitdir -gitstat
pyfind D:\dev -maxdepth 2 -stat
pyfind C:\Qt\6.7.1 -iname *.dll -bgrep "55 71 fe ff"
pyfind D:\w -xlgrep c1:c10 30.8 40..41 foo
pyfind -iname *.txt -xargs -exec 7z a texts.zip ;
pyfind -iname *.txt -xargs -exec copy {} dst ;
See also
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyfindlib-0.0.2.tar.gz
(17.3 kB
view details)
Built Distribution
pyfindlib-0.0.2-py3-none-any.whl
(20.4 kB
view details)
File details
Details for the file pyfindlib-0.0.2.tar.gz
.
File metadata
- Download URL: pyfindlib-0.0.2.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3e569cfc8e542f5d0a19032a7cb850e767512396cdf4abd817bceca711d955f |
|
MD5 | 6d17d791a4b011a99b62112b09271568 |
|
BLAKE2b-256 | 2a44d81be33a26e3b8a03eab0d41b52eb93ee4de6086e47c7c98190cd88d8be7 |
File details
Details for the file pyfindlib-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: pyfindlib-0.0.2-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55bb5793b7ca1b2a34340fcd4844d8621baec3df50febc718f38803069d97c53 |
|
MD5 | 0b1ac2c9990815043dab4866bcab1c14 |
|
BLAKE2b-256 | 1f541c2d345cba7bbf9a9590e35a6050f74b536730408ae8e7b028e07debcb4f |