[linux] Ubuntu - grep werkt

Geert Stappers stappers op stappers.nl
Di Jun 16 10:59:05 CEST 2020


On Tue, Jun 16, 2020 at 09:20:17AM +0200, Azem wrote:
> On 16-06-2020 09:05, Jan Paul Smit wrote:
> > Beste mensen van de Linux Gebruikersgroep,
> > 
> > Onlangs ben ik van Windows overgestapt op Ubuntu. Dat bevalt me prima.
> Gefeliciteerd en welkom bij de Linux-community!

+1


> > Nu ben ik op zoek naar een mogelijkheid om al mijn documenten op een
> > bepaald woord te doorzoeken.
> > Via
> > 
> > _https://nl.wikihow.com/Een-bestand-zoeken-in-Linux_
> > 
> > kwam ik bij de opdracht grep.
> > 
> > In het Terminalvenster typ ik:
> > 
> > grep -r -i “fiets” /home/jan-paul/Documenten
> > 
> > om al mijn bestanden in de map Documenten te doorzoeken op het woord
> > fiets.
> > 
> > Merkwaardig genoeg krijg ik sommige bestanden uit de map Documenten waar
> > het woord fiets in staat wèl op de lijst in het Terminalvenster en
> > anderen níet.

Goede observatie  en nog beter dat er vragen overgesteld worden.

 
> Je hebt bestanden en je hebt bestanden. M.a.w. niet elk bestandstype wordt
> op dezelfde wijze behandeld.
> 
> Grep werkt, als ik het goed heb begrepen het beste met "platte text"
> bestanden.

Grep is gemaakt om een tekenreeks op te kunnen halen.
Als de tekenreeks, string,  voorkomt in het bestand,
dan wordt ie ook getoond.  "platte text bestanden" hebben
tekenreeksen die je makkerlijk als parameter van grep intypt.

Grep werkt ook op niet tekstbestanden.

<screenshot>
$ grep foo /usr/bin/* | head
/usr/bin/a2ping:qw{flsa		612	936},	# U.S. foolscap
/usr/bin/a2ping:qw{flse		612	936},	# European foolscap
/usr/bin/a2ping:Dat: `=item * foo' is wrong, puts big space between `*' and `foo'
/usr/bin/a2ping:just run C<a2ping.pl foo.ps PDF: - | a2ping.pl - PS: foo.ps>
/usr/bin/a2x:    Like a dictionary except values can be accessed as attributes i.e. obj.foo
/usr/bin/a2x:    can be used in addition to obj['foo'].
Binair bestand /usr/bin/aapt2 bevat de gezochte tekst.
/usr/bin/aclocal:      # We reverse the directory contents so that foo2.m4 gets
/usr/bin/aclocal:      # used in preference to foo1.m4.
/usr/bin/aclocal-1.16:      # We reverse the directory contents so that foo2.m4 gets
</screenshot>


> Het zou kunnen zijn dat meer complexere formaten (bijv. libre office
> documenten) minder goed door grep gebrepen worden.

Na "compressie" bestaat een tekenreeks als 'fiets' niet meer.
Office documenten zijn "compressed". Helaas niet met default Linux
compressie algoritme "gzip".
Onder /var/log  heb je misschien  *.gz bestanden. Die kun je
met `zgrep` doorzoeken.

 
> Dus mijn vraag zou zijn: welke type bestanden krijg je te zien in je
> terminallijst?

Mijn inschatting is dat Original Poster meer baat heeft bij weten van
het bestandstype van de document waar wel 'fiets' in staat, maar niet
door `grep` getoond wordt.  Programma `file` kan het vertellen.

<screenshot>
$ file /home/stappers/src/asterisk/doc/api-1.6.0-changes.odt
/home/stappers/src/asterisk/doc/api-1.6.0-changes.odt: OpenDocument Text
</screenshot>


Groeten
Geert Stappers
-- 
Silence is hard to parse


Meer informatie over de Linux maillijst