PredchádzajúciHoreDomovNasledujúci

Vyhľadávanie v súborovom systéme, find a grep

Pre vyhľadávanie súborov v súborovom systéme, ktoré vyhovujú zadaným kritériám, slúži príkaz find. Pre vyhľadávanie v obsahu súborov slúži príkaz grep. Kombináciou týchto dvoch programov je možné vykonávať aj relatívne komplikované prehľadávanie súborového systému.

find

Príkaz find prehľadáva podstrom súborového systému, ktorý sa začína na zadanej ceste, a na položkách, ktoré vyhovujú zadaným filtrom vykoná určenú alebo východziu akciu:

find [cesta] [prepinace] [filtre] [akcia]

Napríklad:

# výpis podstromu aktuálneho pracovného adresára
$> find
# výpis podstromu adresára /home
$> find /home
	# výpis podstromu adresára /home (bez chybových správ)
$> find /home 2> /dev/null

Prepínače menia správanie sa vyhľadávacieho algoritmu. Medzi najčastejšie používané patria:

$> find /etc -maxdepth 0
$> find /etc -maxdepth 1
$> find /etc -maxdepth 2

Filtre príkazu find sú jednoduché logické operácie, ktoré sa postupne aplikujú na jednotlivé položky nájdené príkazom find. Tie položky, pre ktoré filtre vrátia hodnotu true sa spracúvajú ďalej a vykoná sa na nich akcia.

Medzi často používané filtre patria:

$> find /etc -type f -readable
$> find /tmp -user pouzivatel -empty

Akcie pracujú na nájdených položkách, ak nie je zadaná žiadna akcia vykoná sa -print:

$> find /tmp -user pouzivatel -empty -delete
$> find /home -user pouzivatel -readable -exec ls -l {} \;

grep

Príkaz grep filtruje štandardný vstup alebo obsah textových súborov zadaných ako parametre na príkazovom riadku podľa zadaných kritérií. Napríklad vypisuje iba riadky ktoré obsahujú alebo neobsahujú zadaný výraz. Podobne ako find, má aj grep množstvo prepínačov, ktoré ovplyvňujú jeho správanie, medzi najčastejšie používané prepínače patria:

$> grep -e "$USER" /etc/passwd
$> grep -v -e "$USER" /etc/passwd
$> grep -c -v -e "$USER" /etc/passwd
$> grep -H -c -e "$USER" /etc/passwd /etc/shadow /etc/hosts

Kombinácia find a grep

Príkazy find a grep je pri vyhľadávaní v súborovom systéme možné kombinovať napríklad pomocou akcie -exec:

$> find /etc -maxdepth 1 -type f -readable -exec grep -H -i -e "$USER" {} ';'

TODO


PredchádzajúciHoreDomovNasledujúci