find în Linux / Bash

Procesare și filtrare text POSIX / GNU Findutils

Caută fișiere și directoare în mod recursiv pe baza numelui, tipului, mărimii sau datei.

Sintaxă comandă
find [cale...] [criterii...] [acțiune]

Ce face find

Comanda find parcurge arborele de directoare pornind de la o cale specificată și selectează fișierele care satisfac criterii logice complexe: potrivire de nume (-name), tip de nod (-type f pentru fișiere, -type d pentru foldere), dată de modificare (-mtime) sau mărime (-size).

Poate executa automat acțiuni pe fișierele găsite folosind parametrul -exec sau -delete.

Opțiuni și argumente

Opțiune / Parametru Descriere
-name TIPAR Caută fișiere după nume exact sau mască (ex. "*.log").
-iname TIPAR Similar cu -name, dar ignoră majusculele/minusculele.
-type TIP Filtrează după tip: f (fișier obișnuit), d (director), l (symlink).
-mtime N Fișiere modificate acum N zile (ex. -7 mai noi de 7 zile, +30 mai vechi de 30 de zile).
-size N Filtrează după dimensiune (ex. +100M mai mari de 100 MB).
-exec COMANDĂ {} + Execută comanda specificată pe toate fișierele găsite (unde {} reprezintă fișierele).

Exemple

Exemplul 1: Găsirea tuturor fișierelor de configurare

Căutăm recursiv doar fișierele obișnuite care se termină în .conf.

mkdir -p setari/sub
touch setari/app.conf setari/sub/db.conf setari/read.me
find setari -type f -name "*.conf" | sort

Rezultat

setari/app.conf
setari/sub/db.conf

Greșeli frecvente

  • Nefolosirea ghilimelelor la -name *.txt: dacă în directorul curent există un fișier .txt, Bash va înlocui masca înainte ca find să ruleze.
  • Rularea lui -delete înainte de a verifica lista de fișiere cu un simplu find.

Comenzi înrudite

  • grep: Caută linii care se potrivesc cu un tipar sau o expresie regulată în fișiere.
  • ls: Listează fișierele și directoarele dintr-o locație, cu detalii despre dimensiuni, drepturi de acces și date.