De krachtige bash-wildcards in Linux

De krachtige bash-wildcards - 2.0

Zonder deze coole kleine dingen die shell-wildcards worden genoemd, is het werken aan de Linux-opdrachtregel behoorlijk pijnlijk. Dus zorg ervoor dat je de jokertekens goed gebruikt.

Wat zijn shell-wildcards >

wildcards zijn een shell-functie die de opdrachtregel veel krachtiger maakt dan welke GUI-bestandsbeheerders dan ook. Zie je, als je een grote groep bestanden in een grafische bestandsbeheerder wilt selecteren, moet je ze meestal met je muis selecteren. Dit lijkt misschien eenvoudig, maar in sommige gevallen kan het erg frustrerend zijn. Stel dat u een map heeft met een enorme hoeveelheid aan allerlei soorten bestanden en submappen, en u besluit alle HTML-bestanden met het woord 'linux' ergens in het midden van hun naam te verplaatsen van die grote map naar een andere directory. Wat is een eenvoudige manier om dit te doen? Als de directory een enorme hoeveelheid HTML-bestanden met verschillende namen bevat, is uw taak allesbehalve eenvoudig!

In de Linux CLI is die taak net zo eenvoudig uit te voeren als het verplaatsen van slechts één HTML-bestand, en het is zo gemakkelijk vanwege de shell-jokertekens. Jokertekens zijn speciale tekens waarmee u bestandsnamen kunt selecteren die overeenkomen met bepaalde tekenspatronen. Dit helpt u om zelfs een grote groep bestanden te selecteren door slechts een paar tekens te typen, en in de meeste gevallen is het gemakkelijker dan de bestanden met een muis te selecteren.

Hier is een lijst met de meest gebruikte jokertekens in bash:

wildcard Lucifers
* nul of meer tekens
? precies één karakter
[Abcde] precies één karakter vermeld
[Ae] exact één karakter in het opgegeven bereik
[! Abcde] elk teken dat niet wordt vermeld
[! AE] elk teken dat niet binnen het opgegeven bereik valt
{Debian, linux} precies één volledig woord in de gegeven opties

U kunt jokertekens gebruiken met elke opdracht die bestandsnamen accepteert als argumenten.

 

Voorbeelden van jokertekens >

Laten we een paar voorbeelden geven. Waarschijnlijk is het teken * je al bekend, omdat het ook op veel andere plaatsen veel wordt gebruikt, niet alleen in Linux. Het volgende verwijdert bijvoorbeeld elk bestand uit de huidige directory:
rm *

Het volgende commando verplaatst alle HTML-bestanden, die het woord "linux" in hun naam hebben, van de werkmap naar een map met de naam dir1:
mv *linux*.html dir1

Kijk, ik heb je gezegd dat het verplaatsen van meerdere bestanden net zo eenvoudig kan zijn als het verplaatsen van slechts één bestand!

Het volgende toont alle bestanden die beginnen met d en eindigen met .txt:
less d*.txt

Met de volgende opdracht worden alle bestanden verwijderd waarvan de naam begint junk., gevolgd door exact drie tekens:
rm junk.???

Met deze opdracht geeft u een lijst van alle bestanden of mappen waarvan de naam begint hda, gevolgd door precies één cijfer:
ls hda[0-9]

Dit geeft een overzicht van alle bestanden of mappen die beginnen met hda, gevolgd door precies twee cijfers:
ls hda[0-9][0-9]

Hieronder worden alle bestanden of mappen vermeld waarvan de naam met een van beide begint hd or sd, gevolgd door een enkel teken ertussen a en c:
ls {hd,sd}[a-c]

Deze opdracht kopieert alle bestanden, die beginnen met een hoofdletter, naar de map dir2:
cp [A-Z]* dir2

Hiermee worden alle bestanden verwijderd die niet eindigen op ceh or g:
rm *[!cehg]

Ik zou door kunnen gaan met deze voorbeelden, maar je begrijpt het wel. U kunt eenvoudige patronen gebruiken of verschillende jokertekens combineren en zeer complexe patronen construeren, en zoals ik al eerder zei, kunt u ze gebruiken met opdrachten die bestandsnamen als argumenten accepteren.