Zástupné znaky, aka meta znaky, jsou darem z nebes, pokud jde o hledání konkrétních názvů souborů z hromady podobně pojmenovaných souborů. Například pomocí zástupných znaků v Linuxu můžete použít ls příkaz, rm příkaz nebo jakýkoli jiný příkaz Linuxu na více souborech, pokud splňují definovaná kritéria.
V tomto čtení budeme diskutovat o tom, jak můžete použít zástupné znaky v Linuxu ke zefektivnění pracovního postupu a zvýšení produktivity. Nejprve se však pojďme rychle podívat na nejvýkonnější a běžně používané zástupné znaky v Linuxu:
- Hvězdička (*) :(*) zástupný znak představuje libovolný počet neznámých znaků. To je užitečné, když hledáte dokumenty nebo soubory, ale pamatujete si pouze část jejich názvu.
- Otazník (?) :(?) zástupný znak představuje pouze jeden neznámý znak. To je užitečné, když máte seznam podobně pojmenovaných souborů a nejste si jisti několika znaky.
- Znaky v závorce ([ ]) :([ ]) zástupný znak – 3. závorka, nikoli 1. závorka – se používá pro shodu všech výskytů znaků definovaných uvnitř závorek. Tato možnost je užitečná při práci se soubory velkými a malými písmeny, jak uvidíme později.
Nyní si uvědomuji, že všechny tyto informace nedávají smysl, pokud jste se nikdy předtím nezabývali zástupnými znaky. Abychom vám však pomohli odstranit váš zmatek, sestavili jsme podrobného průvodce, včetně 10 příkladů, abyste se ujistili, že správně rozumíte funkci zástupných znaků a začnete je sami používat.
Příklady shody názvů souborů pomocí zástupných znaků
Začněme tím, že použijeme všechny různé zástupné znaky, o kterých jsme hovořili dříve, a uvidíme, jak je použít ke shodě názvů souborů. K tomu použijeme následující sadu souborů:
- Tento příkaz bude odpovídat všem názvům souborů, které začínají písmenem M a končí jedním nebo více výskyty libovolného znaku.
$ ls -l M*
Výstup:
Všimněte si, jak se shoduje pouze se soubory začínajícími velkým „M“ a nikoli malým „m“.
2. Tento příkaz zkopíruje všechny názvy souborů začínající Moje data a končí jedním nebo více výskyty libovolného znaku.
$ ls My-Data*
Výstup:
3. Tento příkaz porovná všechny soubory začínající písmenem M , končící písmenem N a mezi tím má libovolný 1 znak.
$ ls M?N.sh
Výstup:
4. Tento příkaz porovná všechny soubory začínající písmenem M , končící písmenem N , ale pouze 1 znak mezi nimi patří do seznamu znaků definovaných v hranatých závorkách [AEIOU] .
$ ls M[AEIOU]N.sh
Výstup:
4 příklady kombinování různých zástupných znaků pro shodu názvů souborů
Nyní, abyste zvýšili svou efektivitu, můžete tyto zástupné znaky kombinovat a spojovat, aby spolupracovaly a byly efektivnější při porovnávání názvů souborů.
- Zde je příkaz, který vám pomůže najít jakýkoli název souboru, který může mít libovolné 3 znaky (včetně žádných znaků) následovaný koláč a končí jedním nebo více výskyty libovolného znaku.
$ ls ???cake*
Výstup:
2. Zde je příkaz, který bude odpovídat všem názvům souborů, které začínají kterýmkoli z těchto znaků v hranatých závorkách [MNLOP] a končí jedním nebo více výskyty libovolného znaku.
Podívejme se také, co se stane, když nahradíme [MNLOP] s [mnlop] .
Takže příkazy, které budeme používat, jsou:
$ ls [MNLOP]*
$ ls [mnlop]*
Výstup:
Jak vidíte, musíte si dávat pozor na velká a malá písmena, která zadáte do zástupného znaku závorky, protože to ovlivní výsledek.
3. Zde je příkaz, který porovná všechny názvy souborů s kterýmkoli z těchto znaků [MNLOP] jako první kterýkoli z těchto znaků [AEIOU] jako druhý následovaný N a nakonec končí jedním nebo více výskyty libovolného znaku.
$ ls [MNLOP][AEIOU]N*
Výstup:
Všimněte si, jak (*) zástupný znak pouze pomáhá najít všechny přípony názvů souborů.4.
Zde je příkaz, který bude odpovídat všem názvům souborů, které začínají jedním nebo více výskyty jakéhokoli znaku vedoucího k M , následuje libovolný 1 znak a poté N a poté končí jedním nebo více výskyty libovolného znaku.
$ ls *M?N*
Výstup:
Použití zástupných znaků ke shodě sady znaků
Nyní byste měli mít funkční znalosti o tom, jak zástupné znaky fungují. Nyní se můžeme zaměřit na některé pokročilé případy použití, kde jsou zástupné znaky neocenitelné.
Například zástupný znak v závorce umožňuje definovat rozsah znaků pomocí [-] místo psaní všech znaků. To může být velmi užitečné, když chcete určit sadu znaků a porovnat názvy souborů podle toho, kde se znaky vyskytují.
K tomu použijeme následující sadu souborů, jak je znázorněno na obrázku:
Jak můžete vidět, obrázek, který jsme vytvořili, je seznam souborů obsahujících různá data Pokémonů.
Nyní vyhledejte všechny názvy souborů, které začínají pokémon- následované číslem, poté libovolným alfanumerickým znakem, opět následovaným číslem a poté zakončeným jedním nebo více výskyty libovolného znaku, můžeme použít následující příkaz:
$ls pokemon-[0-9][0-9a-zA-Z][0-9]*
Výstup:
Část [0-9] představuje libovolné číselné znaky mezi 0 do 9 .
Další část [0-9a-zA-Z] představuje libovolný počet znaků mezi 0 do 9 , nebo jakékoli malé písmeno mezi a do z, nebo velké písmeno mezi A do Z .
Pokud tedy vypneme [0-9a-zA-Z] s [0-9a-z] , můžete vidět, že výsledek neobsahuje žádný název souboru s velkými písmeny na určeném místě.
$ls pokemon-[0-9][0-9a-z][0-9]*
Výstup:
Použití zástupných znaků k negaci sady znaků
Stejně jako můžete zadat sadu znaků, můžete také negovat sadu znaků při hledání názvů souborů. Zde je příklad, jak se to dělá:
$ls pokemon-[0-9][!a-z][0-9]*
Výstup:
To odpovídá všem názvům souborů, které začínají pokémon- následuje libovolný číselný znak, poté jakýkoli jiný znak než malá písmena, následovaný libovolným číselným znakem a nakonec končí jedním nebo více výskyty jakéhokoli znaku.
Pomocí [!a-z], negujeme množinu všech malých písmen. Nyní se názvy souborů shodují s jakýmkoli znakem, který není malým písmenem.
Zabalení
To nás přivádí na konec našeho rychlého pohledu na zástupné znaky Linuxu a jejich použití. Shrnutí všeho v kostce, hvězdička (*) zástupný znak je nejužitečnější, když znáte název souboru, ale ne příponu. otazník (?) zástupný znak vám může pomoci, pokud zapomenete několik znaků názvu souboru. závorka ([]) zástupný znak je užitečný, když chcete hledání zahrnout do sady definovaných znaků.