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 one of PATTERNS (wildcard)
-iname PATTERNS same as -name but case insensitive
-path PATTERNS file path matches one of PATTERNS (wildcard)
-ipath PATTERNS same as -path but case insensitive
-grep PATTERN file content contains one of PATTERNS (regexp)
-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
-zippath PATTERNS zip containing file with path that matches one of PATTERNS (wildcard)
-zipipath PATTERNS same as -zippath but PATTERNS are case insensitive
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 "5571feff"
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 ;
pyfind -zipipath *.mtl
See also
Project details
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.3.tar.gz
(17.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
pyfindlib-0.0.3-py3-none-any.whl
(20.4 kB
view details)
File details
Details for the file pyfindlib-0.0.3.tar.gz.
File metadata
- Download URL: pyfindlib-0.0.3.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e225b455c026abe9fca4b4e8654283da7043329ec16e27f89d8a09b5d15daa23
|
|
| MD5 |
cf0f648bd5bbcf0eccc17b8fa36b7d82
|
|
| BLAKE2b-256 |
2760449697ff6e995f14cc5ec57949649a6d7a7b465489e52f72beace67bc3c7
|
File details
Details for the file pyfindlib-0.0.3-py3-none-any.whl.
File metadata
- Download URL: pyfindlib-0.0.3-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 |
7c8b5c478cf047ca3c149224cea1fa01825fd3e1d7994a7a7a09280a3563f0df
|
|
| MD5 |
53dcd6705c1df98fcab7652a7aaa2f8b
|
|
| BLAKE2b-256 |
b897bc0428df662062abced00140ce63c9fa14560a9861b1e8cff6d82314d308
|