Finden Sie Dateien mit SQL-ähnlichen Abfragen
Obwohl es nicht dazu neigt, herkömmliche find und ls vollständig zu ersetzen, hat FSELECT diese schönen Funktionen:
.gitignore , .hgignore UND .dockerignore -Unterstützung (experimentell)Mehr ist im Gange!
cargo install fselect AUR -Paket dank @ASM0DEY
AUR -Bin -Paket dank @4censod
fselect in nixpkgs , dank @filalex77
Statischer Bau mit Musl.
Eine statisch vorkompilierte binäre Binärin ist bei Github -Downloads erhältlich.
winget install -e --id fselect.fselect choco install fselect scoop install fselect ausführen brew install fselect laufen sudo port selfupdate
sudo port install fselect
fselect [ARGS] COLUMN[, COLUMN...] [from ROOT[, ROOT...]] [where EXPR] [group by COLUMNS] [order by COLUMNS] [limit N] [into FORMAT]
fselect -i
Detaillierte Beschreibung. Schauen Sie sich zuerst Beispiele an.
Finden Sie temporäre oder Konfigurationsdateien (vollständige Pfad und Größe):
fselect size, path from /home/user where name = '*.cfg' or name = '*.tmp'
Windows -Benutzer können die Zitate weglassen:
fselect size, path from C:Usersuser where name = *.cfg or name = *.tmp
Oder geben Sie alle Argumente in die Zitate wie folgt ein:
fselect "name from /home/user/tmp where size > 0"
Suchen Sie in einem Verzeichnisnamen mit Leerzeichen (Backticks werden ebenfalls unterstützt):
fselect "name from '/home/user/dir with spaces' where size > 0"
fselect "name from `/home/user/dir with spaces` where size > 0"
Oder entkommen einfach den einzelnen Zitaten:
fselect name from '/home/user/dir with spaces' where size gt 0
Geben Sie die Dateigröße an, holen Sie sich einen absoluten Pfad und fügen Sie ihn den Ergebnissen hinzu:
cd /home/user
fselect size, abspath from ./tmp where size gt 2g
fselect fsize, abspath from ./tmp where size = 5m
fselect hsize, abspath from ./tmp where size lt 8k
fselect name, size from ./tmp where size between 5mb and 6mb
Komplexere Abfrage:
fselect "name from /tmp where (name = *.tmp and size = 0) or (name = *.cfg and size > 1000000)"
Aggregatfunktionen (Sie können lockige Klammern verwenden, wenn Sie möchten, und sie sogar mit den regulären Klammern kombinieren):
fselect "MIN(size), MAX{size}, AVG(size), SUM{size}, COUNT(*) from /home/user/Downloads"
Formatierungsfunktionen:
fselect "LOWER(name), UPPER(name), LENGTH(name), YEAR(modified) from /home/user/Downloads"
Holen Sie sich das Jahr der ältesten Datei:
fselect "MIN(YEAR(modified)) from /home/user"
Verwenden Sie einzelne Zitate, wenn Sie Dateien mit Leerzeichen ansprechen müssen:
fselect "path from '/home/user/Misc stuff' where name != 'Some file'"
Regelmäßige Ausdrücke von Rostgeschmack werden unterstützt:
fselect name from /home/user where path =~ '.*Rust.*'
Negieren Sie reguläre Ausdrücke:
fselect "name from . where path !=~ '^./config'"
Einfache Globs erweitern sich automatisch und arbeiten mit = und != Operatoren:
fselect name from /home/user where path = '*Rust*'
Klassisch wie:
fselect "path from /home/user where name like '%report-2018-__-__???'"
Übereinstimmende Übereinstimmungsbetreiber mit regexps deaktiviert suchen:
fselect "path from /home/user where name === 'some_*_weird_*_name'"
Dateien nach Datum finden:
fselect path from /home/user where created = 2017-05-01
fselect path from /home/user where modified = today
fselect path from /home/user where accessed = yesterday
fselect "path from /home/user where modified = 'apr 1'"
fselect "path from /home/user where modified = 'last fri'"
Seien Sie spezifischer für alle Dateien, die zwischen 15 und 16 Uhr im Intervall erstellt wurden:
fselect path from /home/user where created = '2017-05-01 15'
Und noch spezifischer:
fselect path from /home/user where created = '2017-05-01 15:10'
fselect path from /home/user where created = '2017-05-01 15:10:30'
Datum und Zeitintervalle möglich (Finden Sie alles, was seit dem 1. Mai aktualisiert wird):
fselect path from /home/user where modified gte 2017-05-01
Standard ist ein aktuelles Verzeichnis:
fselect path, size where name = '*.jpg'
Suche innerhalb mehrerer Standorte:
fselect path from /home/user/oldstuff, /home/user/newstuff where name = '*.jpg'
Mit minimaler und/oder maximaler Tiefe ( depth ist ein Synonym für maxdepth ):
fselect path from /home/user/oldstuff depth 5 where name = '*.jpg'
fselect path from /home/user/oldstuff mindepth 2 maxdepth 5, /home/user/newstuff depth 10 where name = '*.jpg'
Optional folgen Sie Symlinks:
fselect path, size from /home/user symlinks where name = '*.jpg'
Suche in Archiven (derzeit werden nur Zip-Archives unterstützt):
fselect path, size from /home/user archives where name = '*.jpg'
Oder in Kombination:
fselect size, path from /home/user depth 5 archives symlinks where name = '*.jpg' limit 100
Aktivieren Sie .gitignore oder .hgignore -Unterstützung:
fselect size, path from /home/user/projects gitignore where name = '*.cpp'
fselect size, path from /home/user/projects git where name = '*.cpp'
fselect size, path from /home/user/projects hgignore where name = '*.py'
Suche nach Bilddimensionen:
fselect CONCAT(width, 'x', height), path from /home/user/photos where width gte 2000 or height gte 2000
Suchen Sie quadratische Bilder:
fselect path from /home/user/Photos where width = height
Finden Sie Bilder mit einem bekannten Namen, aber unbekannte Erweiterung:
fselect path from /home/user/projects where name = "*RDS*" and width gte 1
Finden Sie Rap-MP3-Dateien der alten Schule:
fselect duration, path from /home/user/music where genre = Rap and bitrate = 320 and mp3_year lt 2000
Verknüpfungen zu gemeinsamen Dateierweiterungen:
fselect path from /home/user where is_archive = true
fselect path, mime from /home/user where is_audio = 1
fselect path, mime from /home/user where is_book != false
Noch einfachere Art, Boolesche Spalten zu verwenden:
fselect path from /home/user where is_doc
fselect path from /home/user where is_image
fselect path from /home/user where is_video
Finden Sie Dateien mit gefährlichen Berechtigungen:
fselect mode, path from /home/user where other_write or other_exec
fselect mode, path from /home/user where other_all
Einfache globartige Ausdrücke oder sogar regelmäßige Ausdrücke im Dateimodus sind möglich:
fselect mode, path from /home/user where mode = '*rwx'
fselect mode, path from /home/user where mode =~ '.*rwx$'
Finden Sie Dateien nach UID oder GID des Eigentümers:
fselect uid, gid, path from /home/user where uid != 1000 or gid != 1000
Oder nach dem Namen des Eigentümers oder der Gruppe:
fselect user, group, path from /home/user where user = mike or group = mike
Spezielle Dateien finden:
fselect name from /usr/bin where suid
fselect path from /tmp where is_pipe
fselect path from /tmp where is_socket
Finden Sie Dateien mit xattrs, prüfen Sie, ob bestimmte XATTR existiert, oder erhalten Sie den Wert:
fselect "path, has_xattrs, has_xattr(user.test), xattr(user.test) from /home/user"
Fügen Sie beliebiger Text als Spalten ein:
fselect "name, ' has size of ', size, ' bytes'"
Gruppenergebnisse:
fselect "ext, count(*) from /tmp group by ext"
Bestellungsergebnisse:
fselect path from /tmp order by size desc, name
fselect modified, fsize, path from ~ order by 1 desc, 3
Begrenzen Sie schließlich die Ergebnisse:
fselect name from /home/user/samples limit 5
Formatausgabe:
fselect size, path from /home/user limit 5 into json
fselect size, path from /home/user limit 5 into csv
fselect size, path from /home/user limit 5 into html
MIT/Apache-2.0
Unterstützt von der Jetbrains Idea Open Source -Lizenz