Vyhledávání na webu

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:

  1. Jak extrahovat soubory Tar do konkrétního nebo jiného adresáře v Linuxu
  2. 3 způsoby, jak odstranit všechny soubory v adresáři kromě jednoho nebo několika souborů s příponami
  3. 10 užitečných tipů pro psaní efektivních Bash skriptů v Linuxu
  4. 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.