Állománykeresés
Gyakran előforduló feladat, hogy bizonyos jellemzőik alapján állományokat kell előkeresni az állományrendszerből. Erre a célra a find program szolgál. Hívási módja a következő:
find
pathname_list exprA find parancs rekurzív módon végighalad a pathname_list-tel megadott elérési nevektől kezdve az állományrendszeren, megkeresi azokat az állományokat, amelyekre igaz a paraméterként megadott expr logikai feltételsorozat. Az expr-ben több feltételt sorolhatunk fel, amelyek egymással logikai AND kapcsolatban vannak, ha másképp nem rendelkezünk. A feltételek nagyobb része egy-egy állományjellemzőre kérdez, mint a méret (-size) vagy a kor (-newer)..., de számtalan más feltétel áll rendelkezésre (lásd minimanuál). Amennyiben a feltételek közt a -print feltétel is szerepel, akkor a standard outputra írja a feltételekhez illeszkedőnek talált állományok nevét, illetve, ha a -exec cmd feltétel is szerepel, akkor végrehajtja rajtuk a cmd UNIX parancsot.
Az alábbi parancs az aktuális katalógusban lévő állományokat listázza ki (magát a katalógust és a szülő katalógust is):
$ find . -print
.
./.profile
./.lastlogin
./.sh_history
./valami
./vers1
./nu
./nme
./semmi
./akarmi
./vers2
./ascii.c
./logsh
./temp
./semmi1
./delta
$
Az alábbi parancs törli mindazokat az a.out nevű (végrehajtható bináris) állományokat, illetve mindazokat a .o kiterjesztésű (object) állományokat amelyekhez egy hétnél régebben nem fért hozzá senki (ne feledkezzünk meg a zárójelek levédéséről):
$ find /\( -name a.out -o -name "*.o" \) -atime +7 -exec rm {} \;
$
Az -exec opció hatására végrehajtott törlésnél a megtalált állomány nevére a kapcsos zárójelpárral hivatkozhatunk. A pontosvesszőt azért kell kiírnunk, mert az exec opcióval megadott cmd parancs (példánkban az rm parancs) végét jelzi, s elvileg megadhatunk utána további opciókat. (Vigyázzunk arra is, hogy a jobboldali kapcsos zárójel és a backslash karakter között szóköznek kell lennie!)