Zoeken
Wat ik meestal zoek: Een tekststring in een willekeurig bestand in een map:
grep -rn . -e "zoektekst"
Of ik zoek recursief naar een bestand met een bepaalde naam:
find -name "Progress*.pdf"
Find - Bestanden & mappen zoeken en verwerken
Zie Find (Linux).
Grep - ?
Geen idee wat Grep precies is, maar het werkt als een tierelier :)
Locate - Bestanden zoeken
Locate is vermoedelijk de eenvoudigste én meest beperkte manier om bestanden te vinden. Je kunt bv. niet in een bepaalde boom zoeken, alleen globaal (geloof ik). Hte werk lekker simpel. Bv.:
locate bestandsnaam
Indien
locate WatJeZoekt
De volgende foutmelding geeft:
locate: can not open `/var/lib/mlocate/mlocate.db'
Moet je geven:
updatedb
Which - Commando zoeken
Bv.:
which composer.phar /usr/local/bin/composer/composer.phar
Tweede voorbeeld:
which composer
geeft geen resultaten, want het commando heet composer.phar
String in bestanden vinden
Hoe vind je een bepaalde string in een verzameling bestanden?
Voorbeeld 1
Input:
grep -rn . -e "load_theme_textdomain(" # Zoek recursief naar de opgegeven tekenreeks en vermeld regelnummer
Output:
./functions.php:45: load_theme_textdomain( 'shape', get_template_directory() . '/languages' );
Voorbeeld 2: Eén bestand of map doorzoeken
Syntaxis:
grep "text string to search” directory-path
De working directory bevat een MySQL-database-dumps:
grep -r "drop" .
Zonder -r
werkt het niet. Wat ook werkt:
grep "drop" db-dump.mysql
Voorbeeld 3: Boom doorzoeken
Inm. de add to cart-vertaalbug wil ik een Drupal-installatie doorzoeken op de zoekterm Add to cart
:
grep -r "Add to cart" .
Dit geeft een paar schermen met resultaten. Da's goed.
Escaping
# Hoe vind ik bestanden met de letterlijke tekenreeks "$email"? # grep -rn -e "$email " # Niet OK grep -rn -e "email " | grep "\\$" # OK grep -rn -e "\\$email " # Niet OK grep -rn -e "\\\$email " # OK