Matching Bash Pattern

Matching Bash Pattern

La corrispondenza del pattern bash è un concetto indispensabile che è utile quando si selezionano file di file diversi da una directory e si verificano se una stringa corrisponde a un determinato formato. Sia che tu stia iniziando con la corrispondenza del pattern bash o che stai cercando di rispolverare le tue abilità, questa guida copre i vari modi e suggerimenti per la corrispondenza dei motivi.

Matching pattern

Bash offre principalmente due tipi di corrispondenza dei motivi: Globs E globi estesi. I due offrono semplici modi per gli utenti di selezionare i filenature e controllare le diverse stringhe contro regole specifiche. Tuttavia, Bash supporta anche l'uso Regex, Soprattutto quando si lavora con gli script per convalidare vari dati di input e analisi dell'utente.

1. Maggiore del pattern Bash con Globs

La corrispondenza del modello Glob implica principalmente il controllo di filenazioni specifiche in una determinata directory. Sono indicati come Caradici. Esistono tre tipi di modelli bash:

2. Asterisk (*)

Viene utilizzato quando si desidera abbinare zero o più file di file.

Facciamo alcuni esempi.

Controllo dei nomi dei file Avvio o finale con un determinato carattere

Ad esempio, se dovessimo cercare un file a partire da l O li, Potremmo usare i seguenti comandi:

ls l*
ls li*

Nota come corrisponde a tutti i nomi di file che iniziano con Li o L nella directory corrente, comprese le directory.

Per abbinare solo con le directory, aggiungi il / dopo il jolly, come mostrato nel seguente:

Allo stesso modo, se avessimo bisogno di abbinare i nomi dei file quella fine con un dato personaggio o personaggi, potremmo usare il jolly come mostrato nella seguente illustrazione. In questo esempio, abbiniamo i nomi dei file che si concludono e.

ls *e

Supponiamo di non essere sicuro del nome file che vuoi cercare ma conosci i personaggi indicati. Come nell'esempio seguente, è ancora possibile abbinare i nomi di file aggiungendo il jolly prima e dopo i personaggi.

Abbiamo abbinato i file di file che includono il Nux Parola chiave nel loro nome.

Controllare i file con una determinata estensione

Con la corrispondenza del pattern bash, è possibile individuare i file con una determinata estensione. Ad esempio, se si desidera trovare tutti i file PDF o di testo. In tal caso, aggiungi il jolly prima dell'estensione del file. Vediamo il seguente esempio per abbinare tutti i file di testo:

ls *.TXT

Tutti i file di testo sono abbinati come mostrato nel seguente:

3. Punto interrogativo (?)

Il punto jolly del punto interrogativo corrisponde ai nomi dei file che corrispondono a un singolo carattere. Tuttavia, devi conoscere il numero di caratteri che un determinato nome file ha, in modo tale che ciascuno "?"Rappresenta ogni personaggio.

Ad esempio, per abbinare un nome file a quattro caratteri, ma conosciamo l'ultimo personaggio, potremmo avere il seguente esempio:

ls ???e

Allo stesso modo, per trovare una determinata estensione in cui conosci il numero di caratteri del nome file, potremmo usare il seguente comando:

ls ?????.TXT

4. Parentesi quadre []

Quando si desidera una ricerca più specifica come corrispondere ai fileNamme che contengono i caratteri indicati, i caratteri da abbinare possono essere aggiunti nelle staffe quadrate.

Ad esempio, per abbinare i nomi di file che contengono caratteri o numeri specificati indipendentemente dall'estensione, possiamo avere il seguente comando:

LS [M-M]*.*

Qui, abbiniamo i nomi dei file che contengono qualsiasi carattere da E a M e hanno qualsiasi estensione.

Se volevi abbinare i filenati che iniziano con caratteri specifici, diciamo a partire da [F-L] e con una determinata estensione, potremmo usare il seguente modello:

ls [f-l]*.TXT*

5. Abbinamento del modello bash con globi estesi

I globi estesi hanno un'enorme somiglianza con le espressioni regolari. Tuttavia, sono disattivati ​​per impostazione predefinita. Quando devi usarli, devi accenderli usando il seguente comando:

$ shopt -s extglob

I globi estesi includono:

6. ?(modelli)

Viene usato quando si abbina con zero o uno occorrenza del modello specificato.

Ad esempio, se si desidera abbinare tutti i nomi di file con una determinata estensione o quelli che contengono caratteri specifici nella loro denominazione, potremmo avere il seguente comando:

$ ls ?(* Nux* |*.sh)

7. *(modelli)

Viene usato quando si abbina con zero o più occorrenze del modello specificato.

Ad esempio, potremmo utilizzare il seguente comando per abbinare i fileNamme che iniziano con zero o più "F" e sono file di testo:

$ ls *(f).TXT

8. +(modelli)

Viene usato quando si abbina con uno o più occorrenze del modello specificato.

Se eseguiamo il comando precedente, si noti che corrisponde solo ai nomi dei file che devono contenere almeno un "F", il che significa che il .TXT Il file non sarà una corrispondenza.

$ ls +(f).TXT

9. @(modelli)

Viene utilizzato quando si abbina con un verificarsi del modello specificato.

Se abbiamo solo bisogno di abbinare i nomi dei file che contengono solo una "F" usando lo stesso modello utilizzato nell'esempio precedente, potremmo usare l'if @ come mostrato nel seguente:

$ ls @(f).TXT

10. !(modelli)

Viene usato quando si desidera abbinare tutto il resto che non corrisponde al modello specificato.

Facciamo un esempio in cui vogliamo abbinare tutti i file di file che non hanno il modello specificato. In questo esempio, abbiniamo tutti i nomi dei file che non sono file di testo o script bash. Il comando è il seguente:

$ ls !(*.txt |*.sh)

Conclusione

Questa guida ha presentato la corrispondenza del modello bash e i vari esempi per assicurarti di capire come lavorare con le varie opzioni di abbinamento. Usando questa fondazione, puoi far avanzare la corrispondenza del pattern bash e utilizzare la stessa logica quando si desidera abbinare i vari schemi sul terminale o quando si crea gli script bash.