Лого на страниците (малко).

Заглавна страница > Четива > Когато нещата не вървят… > Какво е wildcard?

 

Александър Иванов

Когато нещата не вървят

Какво е wildcard?

В игрите на карти wild card е нещо като жокер — карта, която можеш да използваш вместо всяка друга карта.

Информатиците наричат така символи, които могат да бъдат използвани вместо всеки друг символ, и са започнали да го изписват слято — wildcards. На български това можем да го преведем като общи или обобщаващи символи.

Обобщаващите символи са много полезни, когато трябва да претърсваме дълъг списък от текстови редове: най-често това са списъците с имена на файлове. Та затова обобщаващите символи се използват в командите (програмките) dir, ls, find, както и във файловите менажери при търсене и маркиране на файлове.

Има два обобщаващи символа:

? — замества какъвто и да било символ в дадена позиция;

* — замества каквато и да било поредица от символи в дадена позиция, включително липсата на символи (празна поредица).

Тези обяснения може да ти се сторят „абстрактни“, затова веднага преминавам към примери. А ти стартирай терминал (Command Prompt в Windows) и експериментирай с примерите, които давам. Променяй ги, измисляй си собствени примери.

$ ls *.???

ще изведе списък на всички файлове, чиито разширения са от три символа. Нали помниш? Точката е разделител между името на файла и разширението му. Така звездичката означава ’каквото и да било име на файл’, а трите поредни въпросителни значат ’поредица от три произволни символа за разширението’. Е, ако си в DOS/Windows, използвай командата dir:

> dir *.???

Така

$ ls my_*.*s

ще изведе списък на всички файлове, чиито имена започват с my_, а разширенията им завършват на s, например .ps, .bas, .pas. И така нататък.

Изрази с обобщаващи символи очевидно представляват шаблон за търсене. На английски този шаблон понякога го наричат glob, по всяка вероятност съкращение от global expression.

Както обикновено, в терминала на линукс може да правите повече: в квадратни скоби може да зададете списък от символи, които да стоят в дадена позиция, например:

$ ls *.*[tsf]

ще изведе списък на всички файлове, чиито разширения завършват на f, на s или на t.

Вместо да изброяваш всички символи, може да зададеш интервал, например:

$ ls *[0-9]*

ще ти покаже всички файлове в чиито имена или разширения има цифра. За да използваш интервал, все пак се налага да имаш някаква представа как са наредени символите в кодовата таблица.

* * *

Разучи шаблоните с обобщаващи символи. Пробвай да ги приложиш и във файловия менажер за търсене на файлове или за маркирането им. Ще разучиш работата с обобщаващите символи за не повече от 5–10 минути, а ще ги ползваш цял живот.

Само да предупредя — DOS/Windows не прави разлика между главни и малки букви, докато операционните системи, произхождащи от UNIX, правят. Така шаблонът:

> dir *.doc

ще хване и MyText.DOC, и your_text.doc, докато със същия шаблон:

$ ls *.doc

линукс или Mac OS X ще хване само your_text.doc.

Като посвикнеш да работиш с обобщаващите символи, ще ти се прииска да правиш още неща. Ще ти посоча как: чрез регулярните изрази (виж в раздела cream в режим „expert“, 23. Пак търсене и заместване — регулярни изрази — там аз обяснявам как се работи с регулярните изрази в cream, ама по същия начин е в почти всички програми на GNU/Linux).

В линукс това е лесно — всичко ти е под ръка. В Windows ще трябва да добавиш малко софтуер (свободен, разбира се) и да си поиграеш малко с настройките. Виж разясненията ми за пакета cygwin в 27. За Windows и го инсталирай. След това ще имаш достъп до програми като find, sed и още много други, които могат да работят с регулярни изрази.

Страница: А. И.
Електронна поща
Дата на публикуване: 28.XII.2014
Последна редакция: 28.IV.2023
Съобразено с
html5/css3