Crates.io | fgr-rs |
lib.rs | fgr-rs |
version | 0.1.0 |
source | src |
created_at | 2023-01-26 22:14:53.179079 |
updated_at | 2023-01-26 22:14:53.179079 |
description | A Find & Grep command line utility with SQL-like syntax |
homepage | https://github.com/night-crawler/fgr |
repository | https://github.com/night-crawler/fgr |
max_upload_size | |
id | 768882 |
size | 112,058 |
Find & Grep utility with SQL-like query language.
# Find all files with name equal to sample under the current directory:
fgr -e name=sample
# Find files with containing 's' and 777 permissions:
fgr /home /bin -e 'name=*s* and perm=777'
# Find files with name containing SAMPLE
fgr /home -e 'name="*SAMPLE*"'
# Find files with name containing SAMPLE ignore case
fgr /home -e 'name=i"*SAMPLE*"'
# Find files with name containing SAMPLE (regex)
fgr /home -e 'name=r".+SAMPLE.+"'
# Find files with name containing SAMPLE ignore case (regex)
fgr /home -e 'name=ri".+SAMPLE.+"'
# Find files under the /bin directory not owned by root:
fgr /bin -e 'user > 0'
# Find files under the /bin directory having suid bit (but not limited to):
fgr /bin -e 'perms>4000'
# Find recently accessed files (but not in future):
fgr /home -e 'atime > now - 1h and atime < now'
# Find stuff in files:
fgr /home -e 'type=text and contains=*stuff*'
# Other examples:
fgr /home /bin -e 'name=*s* and perm=777 or (name=*rs and contains=r".+user.is_birthday.*")'
fgr /home /bin -e 'name=*s* and perm=777 or (name=*rs and contains=*birth*)'
fgr /home /bin -e 'ext=so and mtime >= now - 1d'
fgr /home -e 'size>=1Mb and name != *.rs and type=vid'
# xargs & -print0 support
fgr /home -e 'perms=777' -p | xargs -0 -n1 | sort
/sys/kernel/security/apparmor/revision
).ignore
support, thanks to ignore crateBy default, it acts like the find
and visits all directories.
Search by name is quite fast
du -h /home
# 98G /home
# About 100G of .gradle, caches and all the whatnot
sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
fgr /home -e 'name=*sample*' # 1.09s user 2.70s system 169% cpu 2.239 total
sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
find /home -name '*sample*' # 0.71s user 2.09s system 12% cpu 22.156 total
/proc/**/pagemap
scenarios)