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

2 megjegyzés »

  1. 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.

  2. 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.

RSS hírcsatorna a bejegyzéshez kapcsolódó véleményekről. · Visszakövetés

Mondd el a véleményedet!