File kiterjesztések összegyűjtése
Egy könyvtár alatt szeretnénk megtudni, hogy milyen típusu fileok találhatók.
Linux alatt rengeteg kis program áll rendelkezésünkre, amikkel egyszerűen és gyorsan oldhatunk meg kisebb-nagyobb feladatokat.
find /path/to/files -type f | rev | cut -d”.” -f1-1 | rev | sort -u
A fenti kód a find-al megkeresi a “/path/to/files” könyvtárban az összes file-t “-type f” (tud még könyvtárra, symlinkre és egyéb speciális típusokra).
A | (pipe - cső) egyik program kimenetét a másik program bemenetére irányítja át.
A rev a kapott szövegeket megfordítja (/path/to/file/valami.inc.php -> php.cni.imalav/elif/ot/htap/) ez azért kell, mert a könyvtárnevekben és a filenevekben több pont is szerepelhet.
A cut a bemenetet meghatározott hossznál, adott karakternél (a példában a pontnál) tudja “szétválasztani” (körülbelül mintha a PHP-ban az explode-ot használnánk) és itt visszaadja az első “darabot” (-f1-1).
A szöveget visszafordítjuk eredeti formára.
Majd a sort ABC sorrendbe rendezi és a “-u” (uniq) kapcsolójával minden elemet csak egyszer ír ki.
A kimenet pedig így néz ki:
css
gif
html
ico
jpg
js
php
png
sql
Gyulus
# 2006. július 30., vasárnap - 11:14 · válasz erre
Ha viszont nincs kiterjesztése egy file-nak, akkor egész útvonalastul kiírja.
A find egyébként olyasmire is való, amire nem is várnánk. Például a nagyon-nagyon sok file-t kell törölni egy könyvtárból, és az rm nem bír vele, a find a segítségünkre siet.
Benjamin
# 2006. július 30., vasárnap - 12:55 · válasz erre
Igaz, de feltetelezzuk, hogy van kiterjesztes :)
A find-al tenyleg sokmindent lehet, majd igyekszem jo, erdekes es hasznalhato peldakat bemutatni.