Vind bestanden met specifieke tekst in Linux
Linux, ongeacht de distro die je gebruikt, wordt geleverd met een aantal GUI-tools waarmee je naar bestanden kunt zoeken. Veel moderne bestandsbeheerders ondersteunen het zoeken naar bestanden rechtstreeks in de bestandslijst. Er zijn echter een aantal situaties waarin u de console moet gebruiken, bijvoorbeeld tijdens een SSH-sessie of wanneer de X-server niet opstart. Hier leest u hoe u snel bestanden met specifieke tekst kunt vinden met behulp van de terminal.
Advertentie
Als u de GUI kunt gebruiken, is het zoeken naar bestanden geen probleem. In mijn favoriete XFCE-desktopomgeving maakt de Thunar-bestandsbeheerder het zoeken naar bestanden mogelijk door de bestandsnaam rechtstreeks in de bestandenlijst te typen.
Geen van de bestandsbeheerders die ik heb geprobeerd, staat het echter toe om naar bestandsinhoud te zoeken.
Om deze beperking te omzeilen bij het werken in een GUI-sessie, kunt u Сatfish gebruiken. Сatfish is een populaire zoekfunctie. Hiermee kunt u naar de inhoud van bestanden zoeken. U moet op het tandwielpictogram klikken en de optie inschakelen
Inhoud van bestand zoeken.Als het echter om de terminal gaat, kunt u geen grafisch hulpmiddel gebruiken. Ook vind ik Catfish niet handig en geef ik de voorkeur aan klassieke consoletools. Dit zijn de methoden en hulpmiddelen die ik gebruik.
Bestanden vinden die specifieke tekst bevatten in Linux, doe het volgende.
- Open uw favoriete terminal-app. XFCE4-terminal is mijn persoonlijke voorkeur.
- Typ de volgende opdracht:
find ./ -type f -exec grep -l "te vinden tekst" {} \;
- Dit zal de lijst met bestanden produceren die het vereiste tekstgedeelte bevat.
De opdracht find zoekt naar bestanden vanaf de huidige map, "./". U kunt in plaats daarvan het gewenste pad opgeven.
De optie -type f vertelt het om alleen naar bestanden te zoeken en mappen uit te sluiten. U kunt het ook alleen naar een bepaald bestandstype laten zoeken door de optie als volgt toe te voegen:find ./ -type f -iname "*.txt" -exec grep -l "tekst om te zoeken" {} \;
Zie de volgende schermafbeelding:
De -exec optie roept de grep-tool aan voor elk van de overeenkomende bestanden om hun inhoud te controleren. Als de tekst in het bestand wordt gevonden, wordt de naam ervan toegevoegd aan de uitvoer, dankzij de -l optie.
alternatieven
Er zijn alternatieven voor de hierboven beschreven methoden. Allereerst kunt u alleen de grep hulpmiddel. Probeer de volgende opdracht:
grep -iRl "tekst te vinden" ./
- -i staat voor negeer tekst hoofdletters.
- -R staat voor recursieve bestandsverwerking.
- -l staat voor "toon de bestandsnaam, niet het resultaat zelf".
Zoals u kunt zien, is deze methode minder flexibel dan de vind opdracht.
Middernacht commandant
Een andere methode die ik vaak gebruik is Midnight Commander (mc), de app voor bestandsbeheer op de console. In tegenstelling tot find of grep, is mc niet standaard opgenomen in alle Linux-distributies die ik heb geprobeerd. Mogelijk moet u deze zelf installeren.
Als u met Midnight Commander bestanden wilt zoeken die bepaalde tekst bevatten, start u de app en drukt u op de volgende volgorde op het toetsenbord:
Alt + Verschuiving + ?
Dit opent het zoekvenster.
Vul het gedeelte "Bestandsnaam:" in. U kunt iets als "*.txt" specificeren om uw tekst alleen in tekstbestanden te zoeken.
Vul nu de Inhoud: doos. Typ de tekst die de bestanden bevatten en druk op de Enter-toets.
Het zal alle bestanden vinden die aan de criteria voldoen.
Dat is het.