Obcování s ďáblem 14: Vyšší škola hledání souborů - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Informace

Obcování s ďáblem 14: Vyšší škola hledání souborů

25. října 2001, 00.00 | Minule jsme dokončili přehled základních služeb vlastního shellu, dnešní a několik dalších dílů věnujeme ukázkám některých častěji používaných příkazů. Příkaz find si určitě oblíbíte, zvlášť pokuď už máte plné zuby Sherlocka.

Obcování s ďáblem 14: Vyšší škola hledání souborů

Minule jsme dokončili přehled základních služeb vlastního shellu (později se k němu samozřejmě ještě vrátíme, a ukážeme si některé luxusnější možnosti). Dnešní a několik dalších dílů věnujeme ukázkám některých častěji používaných příkazů. Začneme příkazem find; ten rozhodně patří mezi nejšikovnější, a zvlášť šikovný je v Mac OS X, kde není standardně k dispozici žádná slušná aplikace na prohledávání disku (používejte chvíli Sherlocka, a dáte mi za pravdu).

Příkaz find

Úkolem příkazu find je prohledávání disků. Příkaz find to sice dělá mnohem pomaleji než příkaz locate, se kterým jsme se seznámili v sedmém dílu (protože nepoužívá žádné indexy, ale skutečně prohledává disk), zato nabízí nesrovnatelně bohatší paletu služeb.

Příkaz find prohledá všechny zadané složky do hloubky, tj. projde jak jejich soubory, tak i soubory ve vnořených složkách, a tak dále. Složek můžeme určit kolik chceme; prostě je napíšeme jako argumenty příkazového řádku. Následující příkaz by třeba vypsal složky a soubory s dokumentací:

find /*/Documentation

Kdybychom to ale opravdu zkusili a chtěli se tím pročíst, zjistíme, že těch souborů a složek je 22103: to by přeci jen bylo trochu moc. (Mimochodem, malý kvíz: jakpak jsem přišel na to, že jich je právě 22103? Měli byste to už vědět.) Proto find nabízí řadu přepínačů, které umožňují vybrat jen některé z nich:

Hledání podle jména

Asi nejběžnější je výběr souborů podle jména; k tomu slouží přepínač -name. Jeho argumentem může být jméno, nebo specifikace využívající stejných triků, jaká používáme pro zadání jména souboru v shellu. Pokud toho chceme využít, musíme se samozřejmě postarat o to, aby speciální znaky neinterpretoval sám shell — specifikaci musíme uzavřít do uvozovek či apostrofů, nebo musíme využít obrácené lomítko:

8 ~> find /Library/Documentation -name AirPort\*
/Library/Documentation/Help/AirPort.help
/Library/Documentation/Help/AirPort.help/Contents/Resources/English.lproj/AirPortHelp.htm
9 ~>

Hledání podle typu

Občas chceme jen soubory určitého typu: jen obyčejné soubory, nebo jen linky, nebo třeba jen adresáře — na to můžeme použít přepínač -type, mezi jehož argumenty patří 'd' (adresář), 'f' (obyčejný soubor) nebo 'l' (link). Zajímalo by nás třeba, které složky ve vývojářské dokumentaci jsou ve skutečnosti linky někam jinam — a kam? Odpověď na prvou otázku samozřejmě dá příkaz find s přepínačem -type, ale jak zjistit to druhé? Inu, víme přeci, že příkaz ls -l zobrazuje cíle linků; víme, že příkaz ls zobrazí soubory, jejichž seznam dostane na příkazovém řádku — a z minulého dílu také víme, jak dostat výstup příkazu find do příkazového řádku příkazu ls:

15 ~> ls -l `find /Developer/Documentation -type l`
lrwxrwxr-x 1 root admin 112 Sep 3 06:02 /Developer/Documentation/AdditionalTechnologies/PreferencePanes/Reference@ -> /System/Library/Frameworks/PreferencePanes.framework/Versions/A/Resources/English.lproj/Documentation/Reference/
lrwxrwxr-x 1 root admin 108 Sep 3 06:02 /Developer/Documentation/AdditionalTechnologies/ScreenSaver/Reference@ -> /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/English.lproj/Documentation/Reference/
lrwxrwxr-x 1 root admin 102 Sep 3 05:32 /Developer/Documentation/Cocoa/Reference/ApplicationKit@ -> /System/Library/Frameworks/AppKit.framework/Versions/C/Resources/English.lproj/Documentation/Reference
lrwxrwxr-x 1 root admin 106 Sep 3 05:32 /Developer/Documentation/Cocoa/Reference/Foundation@ -> /System/Library/Frameworks/Foundation.framework/Versions/C/Resources/English.lproj/Documentation/Reference
lrwxrwxr-x 1 root admin 100 Sep 3 01:02 /Developer/Documentation/CoreFoundation@ -> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Resources/English.lproj/Documentation
lrwxrwxr-x 1 root admin 107 Sep 3 04:33 /Developer/Documentation/Darwin/Reference/IOKit@ -> /System/Library/Frameworks/IOKit.framework/Versions/A/Resources/English.lproj/Documentation/Reference/IOKit
...

A co dál...

Příkaz find rozumí mnoha dalším přepínačům: můžeme vyhledávat soubory podle vlastníka, podle času a data, podle přístupových práv... vlastně podle čehokoli, co jen chceme. A pokud bychom přeci jen chtěli vyhledávat podle něčeho, co find neumí, jde to také: stačí použít přepínač -exec. Na ten — a na další služby a možnosti příkazu find — se už ale podíváme až příště.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: