10 Praktických příkladů Použití zástupných znaků ke shodě názvů souborů v Linuxu
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 libovolným příkazem, jako je například příkaz ls nebo příkaz rm, k vypsání nebo odebrání souborů odpovídajících zadaným kritériím.
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 Linuxu
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ími jedním nebo více výskyty libovolného znaku.
ls -l l*
2. Tento příklad ukazuje další použití *
ke zkopírování všech názvů souborů s předponou users-0
a končících 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 na l
, za kterým následuje libovolný znak a končící na 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 na l
, za kterými následuje libovolný ze znaků v hranaté závorce, ale končící na 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 porovná všechny názvy souborů s předponou libovolnými dvěma znaky následovanými st
, které však končí jedním nebo více výskyty libovolného 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čícím jedním nebo více výskyty jakéhokoli znaku.
ls
ls [clst]*
7. V těchto příkladech jsou pouze názvy souborů začínající kterýmkoli z těchto znaků [clst]
následované jedním z těchto znaků [io]
a poté libovolným znak, následovaný t
a nakonec bude uveden jeden nebo více výskytů libovolného znaku.
ls
ls [clst][io]?t*
8. Zde budou odstraněny názvy souborů s předponou jednoho nebo více výskytů libovolného znaku, za nimiž následují písmena tar
a končící jedním nebo více výskyty jakéhokoli znaku.
ls
rm *tar*
ls
Jak spárovat sadu znaků v Linuxu
9. Nyní se podívejme na to, jak zadat 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
, následuje číslo, malé písmeno nebo číslo, poté čí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 odpovídá názvům souborů začínajícím users-i
, následuje číslo, malé nebo velké písmeno nebo číslo, pak čí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
, po 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 jakákoli postava.
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í symbolu !
. 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 charakter.
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 systému Linux:
- Jak extrahovat soubory Tar do konkrétního nebo jiného adresáře v Linuxu
- 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.