Started as rewrite(hello, rustaceans ;)) of posix 'find' utility in python 2.7.18.
As a result, we have an analogue of this utility, written in python 2.7.18, btw ;).
Can be built with both python3 and python 2.7.18.
python3.14(preferred) or python 2.7.18.
Clone repo and go to the hell ;) Joke, go to project directory.
- Create virtualenv
python -m virtualenv env- Activate virtualenv and install dependencies from requirements file(you may need redact it),
- Run tests to ensure everything is working fine:
pytest -v tests- Build it
usage: python -m main [-h] [-subs SUBSTRINGS] [-ics IGNORE_CASE_SUBSTRINGS]
[-ssubsfp SEARCH_SUBSTRS_IN_FULLPATH] [-ftype FILE_TYPE]
[-fsize FILE_SIZE] [-atime ACCESS_TIME]
[-mtime MODIFICATION_TIME] [-rsearch RECURSE_SEARCH]
[-ssd START_SEARCH_DIR] [-ofsep OUTPUT_FILE_LINE_SEP]
[-oufp OUTPUT_FILE_PATH]
cli-utility for searching files. And, of course, directories are files either :P
April Fool's joke. Release date: April 1, 2026.
Started as rewrite(hello, rustaceans ;)) of posix 'find' utility in python 2.7.18.
As a result, we have an analogue of this utility, written in python 2.7.18, btw ;).
options:
-h, --help show this help message and exit
-subs, --substrings SUBSTRINGS
Substrings, that should be in filepaths.
Substrings separator: +. This separator means condition 'and'.
For condition 'or' use separator: {or}.
If not specified or {None}, there will be no substring check.
Argument type: string.
-ics, --ignore_case_substrings IGNORE_CASE_SUBSTRINGS
Whether to ignore case in substring check or not.
By default: False.
Argument type: string or number.
Any not empty string means True. Any nonzero number means True. And vise versa.
-ssubsfp, --search_substrs_in_fullpath SEARCH_SUBSTRS_IN_FULLPATH
Whether to search substrings in fullpath or only in basename.
By default: False.
Argument type: string or number.
Any not empty string means True. Any nonzero number means True. And vise versa.
-ftype, --file_type FILE_TYPE
Type of files to search: {None}, directory, file.
If not specified, searches for all.
Argument type: string.
Note: for file also acceptable 'f' and for directory 'd'.
-fsize, --file_size FILE_SIZE
Filesize to search.
ComparableValue.
Describes the value to find it. Criterias: greater, equal, less.
So, 3 values can be specified or omitted: greater, equal, less.
Arguments separator: ,.
Order of the arguments: greater, equal, less.
Even if value omitted, here should be always 3 arguments(always 2 signs ,).
If equal specified, compares for equality. Ignores less and greater.
If less and greater specified, checks for presence in exclusive range.
If less and greater not specified, as well as equal, any value will be considered as corresponding.
If greater specified and less not specified, value will be considered as corresponding if it less than greater.
If less specified and greater not specified, value will be considered as corresponding if it greater than less.
Absolute value is equal if equal specified.
If greater and less specified, absolute is length of the vector.
If all values omitted, then absolute value is 0.
If greater omitted and less specified, then absolute value is less. And vise versa.
Minimum unit: bit. Maximum unit: tebibyte.
Available units: bit, byte, kibibyte, mebibyte, gibibyte, tebibyte.
Abbreviations:
bit=b;
byte=B;
kibibyte=KiB;
mebibyte=MiB;
gibibyte=GiB;
tebibyte=TiB
Format example: 16b32B19KiB32MiB17GiB15TiB or 32B19KiB32MiB17GiB15TiB16. Negative and floating values are also acceptable.
Entered forma will be converted to bytes.
Argument type: string.
-atime, --access_time ACCESS_TIME
Access time to search.
ComparableValue.
Describes the value to find it. Criterias: greater, equal, less.
So, 3 values can be specified or omitted: greater, equal, less.
Arguments separator: ,.
Order of the arguments: greater, equal, less.
Even if value omitted, here should be always 3 arguments(always 2 signs ,).
If equal specified, compares for equality. Ignores less and greater.
If less and greater specified, checks for presence in exclusive range.
If less and greater not specified, as well as equal, any value will be considered as corresponding.
If greater specified and less not specified, value will be considered as corresponding if it less than greater.
If less specified and greater not specified, value will be considered as corresponding if it greater than less.
Absolute value is equal if equal specified.
If greater and less specified, absolute is length of the vector.
If all values omitted, then absolute value is 0.
If greater omitted and less specified, then absolute value is less. And vise versa.
Using timezone: UTC.
Minimum unit: second. Maximum unit: year.
Min year: 1970. Max year: 3000.
Year will never be less than 1970.
Available units: second, minute, hour, day, month, year.
Abbreviations:
second=s;
minute=m;
hour=h;
day=d;
month=M;
year=Y
Format example: 2024Y6M3d4h32m21 or 2024Y6M3d4h32m21s. Negative and floating values are also acceptable.
Note: entered date will be converted to seconds, accurate time is not guaranteed.
Argument type: string.
-mtime, --modification_time MODIFICATION_TIME
Modification time to search.
ComparableValue.
Describes the value to find it. Criterias: greater, equal, less.
So, 3 values can be specified or omitted: greater, equal, less.
Arguments separator: ,.
Order of the arguments: greater, equal, less.
Even if value omitted, here should be always 3 arguments(always 2 signs ,).
If equal specified, compares for equality. Ignores less and greater.
If less and greater specified, checks for presence in exclusive range.
If less and greater not specified, as well as equal, any value will be considered as corresponding.
If greater specified and less not specified, value will be considered as corresponding if it less than greater.
If less specified and greater not specified, value will be considered as corresponding if it greater than less.
Absolute value is equal if equal specified.
If greater and less specified, absolute is length of the vector.
If all values omitted, then absolute value is 0.
If greater omitted and less specified, then absolute value is less. And vise versa.
Using timezone: UTC.
Minimum unit: second. Maximum unit: year.
Min year: 1970. Max year: 3000.
Year will never be less than 1970.
Available units: second, minute, hour, day, month, year.
Abbreviations:
second=s;
minute=m;
hour=h;
day=d;
month=M;
year=Y
Format example: 2024Y6M3d4h32m21 or 2024Y6M3d4h32m21s. Negative and floating values are also acceptable.
Note: entered date will be converted to seconds, accurate time is not guaranteed.
Argument type: string.
-rsearch, --recurse_search RECURSE_SEARCH
Whether to search recursive or only in given directory.
By default: False.
Argument type: string or number.
Any not empty string means True. Any nonzero number means True. And vise versa.
-ssd, --start_search_dir START_SEARCH_DIR
Start directory for searching.
By default: current directory.
Current directory: /home/void/MyFiles/Files/CompFiles/Projects/Python/have_fun/rev/pattern_file_finder.
Argument type: string.
-ofsep, --output_file_line_sep OUTPUT_FILE_LINE_SEP
Separator for received paths.
By default: ;.
Argument type: string.
Note: newline character always be added automatically.
-oufp, --output_file_path OUTPUT_FILE_PATH
Where to put found filepaths.
File or console. If file exists, it will be overwritten.
Encoding for output file: utf-8.
If not specified, than output will be in console.
Argument type: string.