Zoeken naar bestanden op inhoud in Linux kan de tijd en moeite aanzienlijk verminderen bij het zoeken naar specifieke informatie in grote en complexe bestandssystemen.
Deze zoekopdracht kan vooral handig zijn als je bestanden wilt vinden die een bepaalde tekenreeks of trefwoord bevatten, of als je alle bestanden wilt vinden die aan een bepaald patroon of criterium voldoen.
Zoeken naar bestanden op inhoud kan worden gebruikt voor verschillende taken, zoals het vinden van:
Het algemene doel van het zoeken van bestanden op inhoud is om het makkelijker te maken om met het bestandssysteem te werken en de informatie te vinden die je nodig hebt in het bestandssysteem.
Laten we beginnen met het hulpprogramma ack. Het werd in 2005 gemaakt als alternatief voor grep en werd al snel populair onder ontwikkelaars.
Het heeft verschillende voordelen ten opzichte van grep
, waaronder
grep
. Dit betekent dat je gemakkelijk verborgen bestanden op je systeem kunt vinden.Voorbeelden van het gebruik van ack:
- Vind alle bestanden in de huidige map en zijn submappen die het woord
"test"
bevatten: ack "test"
- Hetzelfde, maar dan bestanden met de extensie
.bak
uitsluiten: ack "test" --ignore-file=match:/.bak$/
- Zoek alle bestanden in de huidige map die de string "hello" bevatten en voer de eerste 2 regels van elk bestand uit:
ack "hello" --heading --max-count=2
De tweede interessante tool is ripgrep. Het lijkt in veel opzichten op ack, maar gebruikt een sneller zoekalgoritme, waardoor het vooral handig is voor grote projecten.
Hier zijn enkele voorbeelden:
"test"
bevatten : rg "test"
.bak: rg "test" --glob "!*.bak"
rg "hello" --heading --max-columns=2
Aan het einde is het de moeite waard om fzf te noemen. Het is niet alleen een stringzoeker zoals ack en ripgrep. Fzf wordt gebruikt als een hulpprogramma om bestanden, mappen en items in een lijst te vinden. Verder werkt het vergelijkbaar met ack/ripgrep, maar met de toegevoegde mogelijkheid om de resultaten live te filteren. Hier zijn enkele voorbeelden:
- Zoek naar bestanden die beginnen met de letter F op je computer:
locate F | fzf -m
- Verlaat de huidige map en ga naar de map die ik wil:
cd **<TAB> | fzf
- Selecteer de SVN revisie en kopieer het nummer naar het klembord:
svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy
Hopelijk helpen deze tools je om snel en efficiënt de bestanden en strings te vinden die je nodig hebt. Welke je ook kiest, ze bieden allemaal geavanceerde zoekfuncties die je werk aanzienlijk kunnen versnellen.