Zástupné znaky (také označované jako meta znaky) jsou symboly nebo speciální znaky, které představují jiné znaky. Můžete je použít s jakýmkoli příkazem, jako je příkaz ls nebo příkaz rm k vypsání nebo odstranění souborů odpovídajících daným kritériím, receptivně.
Přečtěte si také:10 užitečných praktických příkladů řetězení operátorů v Linuxu
Tyto zástupné znaky jsou interpretovány shellem a výsledky jsou vráceny příkazu, který spustíte. V Linuxu existují tři hlavní zástupné znaky:
- Hvězdička
(*)
– odpovídá jednomu nebo více výskytům libovolného znaku, včetně žádného znaku. - Otazník
(?)
– představuje nebo odpovídá jedinému výskytu libovolného znaku. - Znaky v hranatých závorkách
([ ])
– odpovídá všem výskytům znaků uzavřených v hranatých závorkách. Je možné použít různé typy znaků (alfanumerické znaky):čísla, písmena, jiné speciální znaky atd.
Musíte pečlivě vybrat, který zástupný znak použít, aby odpovídal správným názvům souborů:je také možné je všechny zkombinovat do jedné operace, jak je vysvětleno v příkladech níže.
Jak porovnat názvy souborů pomocí zástupných znaků v systému Linux
Pro účely tohoto článku použijeme k demonstraci každého příkladu následující soubory.
createbackup.sh list.sh lspace.sh speaker.sh listopen.sh lost.sh rename-files.sh topprocs.sh
1. Tento příkaz porovná všechny soubory s názvy začínajícími l
(což je předpona) a končící jedním nebo více výskyty libovolného znaku.
$ ls -l l*


2. Tento příklad ukazuje jiné použití *
zkopírujte všechny názvy souborů s předponou users-0
a končí jedním nebo více výskyty libovolného znaku.
$ mkdir -p users-info $ ls users-0* $ mv -v users-0* users-info/ # Option -v flag enables verbose output


3. Následující příkaz porovná všechny soubory s názvy začínajícími l
následovaný libovolným znakem a končící st.sh
(což je přípona).
$ ls l?st.sh


4. Následující příkaz porovná všechny soubory s názvy začínajícími l
následovaný libovolným ze znaků v hranaté závorce, ale končící st.sh
.
$ ls l[abdcio]st.sh


Jak kombinovat zástupné znaky, aby odpovídaly názvům souborů v Linuxu
Zástupné znaky můžete zkombinovat a vytvořit tak složitá kritéria pro shodu názvu souboru, jak je popsáno v následujících příkladech.
5. Tento příkaz bude odpovídat všem názvům souborů s předponou libovolnými dvěma znaky následovanými st
ale končí jedním nebo více výskyty jakéhokoli znaku.
$ ls $ ls ??st*


6. Tento příklad odpovídá názvům souborů začínajícím kterýmkoli z těchto znaků [clst]
a končí jedním nebo více výskyty libovolného znaku.
$ ls $ ls [clst]*


7. V těchto příkladech pouze názvy souborů začínající kterýmkoli z těchto znaků [clst]
následovaný jedním z těchto [io]
a poté libovolný jednotlivý znak následovaný t
a nakonec bude uveden jeden nebo více výskytů jakéhokoli znaku.
$ ls $ ls [clst][io]?t*


8. Zde jsou názvy souborů s předponou jedním nebo více výskyty libovolného znaku, za nimiž následují písmena tar
a končící jedním nebo více výskyty jakéhokoli znaku budou odstraněny.
$ ls $ rm *tar* $ ls


Jak přiřadit sadu znaků v Linuxu
9. Nyní se podívejme, jak určit sadu znaků. Zvažte níže uvedené názvy souborů obsahující informace o uživatelích systému.
$ ls users-111.list users-1AA.list users-22A.list users-2aB.txt users-2ba.txt users-111.txt users-1AA.txt users-22A.txt users-2AB.txt users-2bA.txt users-11A.txt users-1AB.list users-2aA.txt users-2ba.list users-12A.txt users-1AB.txt users-2AB.list users-2bA.list
Tento příkaz bude odpovídat všem souborům, jejichž název začíná users-i
, za kterým následuje číslo, malé písmeno nebo číslo, potom číslo a končí jedním nebo více výskyty libovolného znaku.
$ ls users-[0-9][a-z0-9][0-9]*
Další příkaz porovnává názvy souborů začínající users-i
, za kterým následuje číslo, malé nebo velké písmeno nebo číslo, poté číslo a končí jedním nebo více výskyty libovolného znaku.
$ ls users-[0-9][a-zA-Z0-9][0-9]*
Tento příkaz, který následuje, bude odpovídat všem názvům souborů začínajícím users-i
, za kterým následuje číslo, malé nebo velké písmeno nebo číslo, poté malé nebo velké písmeno a končí jedním nebo více výskyty libovolného znaku.
$ ls users-[0-9][a-zA-Z0-9][a-zA-Z]*


Jak negovat sadu znaků v Linuxu
10. Sadu znaků můžete také negovat pomocí !
symbol. Následující příkaz vypíše všechny názvy souborů začínající users-i
, za kterým následuje číslo, jakýkoli platný znak názvu souboru kromě čísla, potom malé nebo velké písmeno a končí jedním nebo více výskyty libovolného znaku.
$ ls users-[0-9][!0-9][a-zA-Z]*
To je prozatím vše! Pokud jste si vyzkoušeli výše uvedené příklady, měli byste nyní dobře rozumět tomu, jak zástupné znaky fungují, aby odpovídaly názvům souborů v Linuxu.
Můžete si také přečíst následující články, které ukazují příklady použití zástupných znaků v Linuxu:
- Jak extrahovat soubory Tar do konkrétního nebo jiného adresáře v systému Linux
- 3 způsoby, jak odstranit všechny soubory v adresáři kromě jednoho nebo několika souborů s příponami
- 10 užitečných tipů pro psaní efektivních Bash skriptů v Linuxu
- Jak používat Awk a regulární výrazy k filtrování textu nebo řetězců v souborech
Pokud se chcete o něco podělit nebo se na něco zeptat, použijte níže uvedený formulář pro komentáře.