Vzor vyhledávání ( anglicky wildcard pattern, glob pattern ) je metoda popisu vyhledávacího dotazu pomocí metaznaků ( zástupných znaků ).
Dva nejběžněji používané znaky jsou hvězdička ( * ) pro nahrazení libovolného řetězce znaků a otazník ( ? ) pro nahrazení libovolného jednotlivého znaku .
V tomto případě může * také znamenat prázdný řetězec (bez znaků). Například osamělá hvězda je vzor, který odpovídá všem adresářovým souborům, které jsou pro tento vzor hledány. Použití šablony *.html vybere všechny html soubory a šablona my*.odt vybere soubory, které začínají na „my“ a končí na „.odt“. Vzor *2010* odpovídá všem souborům, jejichž názvy obsahují skupinu znaků 2010.
Otazník ( ? ) ve vzoru označuje libovolný jednotlivý znak. Například pod šablonou zprávy.??? budou stačit soubory s libovolnou příponou o třech písmenech, ale začínající přesně tak, jak je uvedeno v šabloně. Notace descrip?ion.pdf najde soubory s daným názvem, ale místo otazníku lze použít jakýkoli znak (například s nebo t). Je zřejmé, že zástupné znaky otazníku jsou méně časté než hvězdičky.
Existují také složitější pravidla pro psaní šablon. Například použití hranatých závorek ([ ]) se seznamem možných hodnot umožňuje flexibilnější vyhledávání souborů. Předpokládejme, že je nutné najít všechny soubory, jejichž názvy začínají písmenem m, přičemž se vyžaduje, aby se nerozlišovala malá a velká písmena. Vzor pak bude vypadat takto: [mM]* . Pokud chcete současně najít soubory, které začínají po sobě jdoucími písmeny v abecedě, můžete určit rozsah. Například šablona [m-pM-P]???.png bude odpovídat všem souborům png, jejichž názvy se skládají ze čtyř písmen, přičemž první písmeno m nebo n nebo o nebo p nerozlišuje malá a velká písmena.
Příklady příkazů shellu POSIX (Bourne) :
cat * >concat # Zřetězí všechny soubory v aktuálním adresáři do jednoho rm *.??? # Smaže všechny soubory v aktuálním adresáři, které mají tříznakovou příponuV programech pro správu databází, jako je SQL , se místo * namísto ? podtržítko _. V aplikaci Microsoft Access a konkrétněji v jejich skriptovacích jazycích lze ve výrazech „LIKE“ použít zástupné znaky.
Vzorek | Shoda |
---|---|
boo?.tmp | book.tmp, boot.tmp, boo1.tmp atd. |
boo[tk].tmp | boot.tmp a book.tmp |
b*tt?p | boot.tep, bat.tmp, bt.tnp atd. |
[ac]3.bat | a3.bat, b3.bat a c3.bat |
V regulárních výrazech byl koncept zástupných znaků dále rozvinut. Mají speciální zápisy nejen pro jeden (."") a libovolný počet (kvantifikátor "*") znaků, ale také pro různé třídy znaků (například prázdné znaky "\s"), alternativní výrazy ("|" ) a mnoho dalšího.
Někdy je při práci se soubory nutné nebo možné zadat pouze část jejich názvu nebo přípony. Děje se tak například proto, abychom v parametrech programu nepojmenovali úplně všechny soubory, na kterých se operace provádí, ale vybrali je do skupiny podle nějakého atributu (všimněte si, že některé programy nepracují s jednotlivými soubory, ale se skupinou). Může být také nutné najít soubor nebo soubory, jejichž úplný název a/nebo přípony nejsou známy. Pro tyto účely se používají tzv. šablony.
Příkazové shelly Linuxu ( shell , bash atd.), stejně jako různé programovací jazyky, vám umožňují vybrat (prohledávat) určité skupiny z různých názvů souborů a adresářů pomocí takzvaných vzorů názvů souborů. Příkazový shell porovná další soubor se šablonou, a pokud se do této šablony „vejde“, bude vzat v úvahu, pokud ne, bude přeskočen. Zhruba lze šablonu přirovnat k jakési krabičce, do které se nevejde každý předmět, a to nejen velikostí, ale i nesouladem křivek krabičky a předmětu.
Shell bash sdílí vzory s mnoha příkazy. Například ls (procházení adresářů), cp (kopírování souborů), find (hledání souborů) atd. Příkazům však není předána šablona, ale soubor (skupina souborů), který pod ni již spadá. Příkazový shell sám určuje objekty, které odpovídají vzoru.