Ricerca nel sito web

10 esempi pratici di utilizzo dei caratteri jolly per abbinare i nomi dei file in Linux


I caratteri jolly (noti anche come metacaratteri) sono simboli o caratteri speciali che rappresentano altri caratteri. Puoi usarli con qualsiasi comando come il comando ls o il comando rm per elencare o rimuovere in modo ricettivo i file che corrispondono a un determinato criterio.

Leggi anche: 10 utili esempi pratici sul concatenamento di operatori in Linux

Questi caratteri jolly vengono interpretati dalla shell e i risultati vengono restituiti al comando eseguito. Ci sono tre caratteri jolly principali in Linux:

  • Un asterisco (*) – corrisponde a una o più occorrenze di qualsiasi carattere, incluso nessun carattere.
  • Punto interrogativo (?): rappresenta o corrisponde a una singola occorrenza di qualsiasi carattere.
  • Caratteri tra parentesi ([ ]): corrisponde a qualsiasi occorrenza di carattere racchiuso tra parentesi quadre. È possibile utilizzare diversi tipi di caratteri (caratteri alfanumerici): numeri, lettere, altri caratteri speciali ecc.

È necessario scegliere con attenzione quale carattere jolly utilizzare per abbinare i nomi file corretti: è anche possibile combinarli tutti in un'unica operazione come spiegato negli esempi seguenti.

Come abbinare i nomi dei file utilizzando i caratteri jolly in Linux

Ai fini di questo articolo, utilizzeremo i seguenti file per dimostrare ciascun esempio.

createbackup.sh  list.sh  lspace.sh        speaker.sh
listopen.sh      lost.sh  rename-files.sh  topprocs.sh

1. Questo comando abbina tutti i file con nomi che iniziano con l (che è il prefisso) e terminano con una o più occorrenze di qualsiasi carattere.

ls -l l*	

2. Questo esempio mostra un altro utilizzo di * per copiare tutti i nomi di file con il prefisso users-0 e che terminano con una o più occorrenze di qualsiasi carattere.

mkdir -p users-info
ls users-0*
mv -v users-0* users-info/	# Option -v flag enables verbose output

3. Il comando seguente corrisponde a tutti i file con nomi che iniziano con l seguito da qualsiasi singolo carattere e terminano con st.sh (che è il suffisso ).

ls l?st.sh	

4. Il comando seguente corrisponde a tutti i file con nomi che iniziano con l seguito da uno qualsiasi dei caratteri tra parentesi quadre ma terminano con st.sh .

ls l[abdcio]st.sh 

Come combinare i caratteri jolly per abbinare i nomi dei file in Linux

È possibile combinare i caratteri jolly per creare criteri di corrispondenza dei nomi file complessi come descritto negli esempi seguenti.

5. Questo comando corrisponderà a tutti i nomi di file con il prefisso di due caratteri qualsiasi seguiti da st ma che terminano con una o più occorrenze di qualsiasi carattere.

ls
ls ??st*

6. Questo esempio corrisponde ai nomi di file che iniziano con uno qualsiasi di questi caratteri [clst] e terminano con una o più occorrenze di qualsiasi carattere.

ls
ls [clst]*

7. In questi esempi, solo i nomi di file che iniziano con uno qualsiasi di questi caratteri [clst] seguito da uno di questi [io] e quindi qualsiasi singolo carattere, seguito da una t e infine verranno elencate una o più occorrenze di qualsiasi carattere.

ls
ls [clst][io]?t*

8. Qui, i nomi dei file con il prefisso con una o più occorrenze di qualsiasi carattere, seguiti dalle lettere tar e che terminano con una o più occorrenze di qualsiasi carattere verranno rimossi.

ls
rm *tar*
ls

Come abbinare i caratteri impostati in Linux

9. Ora vediamo come specificare un set di caratteri. Considera i nomi dei file seguenti contenenti informazioni sugli utenti del sistema.

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

Questo comando corrisponderà a tutti i file il cui nome inizia con users-i, seguito da un numero, una lettera minuscola o un numero, quindi un numero e termina con una o più occorrenze di qualsiasi carattere.

ls users-[0-9][a-z0-9][0-9]*

Il comando successivo corrisponde ai nomi di file che iniziano con users-i, seguito da un numero, una lettera o un numero minuscolo o maiuscolo, quindi un numero e termina con una o più occorrenze di qualsiasi carattere.

ls users-[0-9][a-zA-Z0-9][0-9]*

Il comando che segue corrisponderà a tutti i nomi di file che iniziano con users-i, seguito da un numero, una lettera o un numero minuscolo o maiuscolo, quindi una lettera minuscola o maiuscola e termina con una o più occorrenze di qualsiasi carattere.

ls users-[0-9][a-zA-Z0-9][a-zA-Z]*

Come negare un set di caratteri in Linux

10. Puoi anche negare un set di caratteri utilizzando il simbolo !. Il comando seguente elenca tutti i nomi di file che iniziano con users-i, seguito da un numero, qualsiasi carattere valido per la denominazione dei file tranne un numero, quindi una lettera maiuscola o minuscola e termina con una o più occorrenze di qualsiasi carattere.

ls users-[0-9][!0-9][a-zA-Z]*

È tutto per ora! Se hai provato gli esempi precedenti, ora dovresti avere una buona conoscenza di come funzionano i caratteri jolly per abbinare i nomi dei file in Linux.

Potrebbe interessarti anche leggere i seguenti articoli che mostrano esempi di utilizzo dei caratteri jolly in Linux:

  1. Come estrarre file Tar in directory specifiche o diverse in Linux
  2. 3 modi per eliminare tutti i file in una directory tranne uno o pochi file con estensioni
  3. 10 suggerimenti utili per scrivere script Bash efficaci in Linux
  4. Come utilizzare Awk e le espressioni regolari per filtrare testo o stringhe nei file

Se hai qualcosa da condividere o una domanda da porre, utilizza il modulo dei commenti qui sotto.