Come controllare se un file contiene una stringa specifica utilizzando PowerShell
-
Controllare se un file contiene una stringa specifica utilizzando
Select-String
in PowerShell -
Controllare se un file contiene una stringa specifica utilizzando
Get-Content
in PowerShell - Controllare file multipli che contengono una stringa specifica
- Conclusione

Cercare una stringa specifica all’interno di un file di testo è un’attività comune quando si lavora con Windows PowerShell. Mentre gli ambienti Unix e Linux hanno il fidato comando grep
, PowerShell offre un approccio alternativo utilizzando i cmdlet Select-String
, Get-Content
e Get-ChildItem
.
In questo articolo, esploreremo vari metodi su come utilizzare PowerShell per trovare una stringa in un file di testo.
Controllare se un file contiene una stringa specifica utilizzando Select-String
in PowerShell
Diciamo che abbiamo un file Demo.txt
sulla nostra macchina e vogliamo trovare la stringa Demonstration
in esso.
Ecco lo script PowerShell per farlo:
Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'
In questo script, utilizziamo Select-String
con il parametro -Path
per specificare la posizione del file e il parametro -Pattern
per specificare la stringa che stiamo cercando.
Se il nostro file contiene il modello specificato ('Demonstration'
), la console mostrerà il nome del file, il numero di riga e la riga contenente la stringa.
Output:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
L’output sopra mostra il file Demo.txt
con il suo percorso completo, la riga contenente la nostra stringa (riga 1
) e la riga che contiene la stringa stessa (This is purely for demonstration
).
Ma cosa succede se abbiamo solo bisogno di sapere se il file contiene o non contiene la stringa? In tal caso, possiamo modificare lo script come segue:
$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"
if ($Knw -ne $null) {
echo Contains String
}
else {
echo Does not Contain String
}
In questo script, abbiamo definito una variabile chiamata $Knw
, che contiene il risultato della stringa cercata "Demonstration"
nel file situato nel percorso specificato utilizzando Select-String
. Poi, controlliamo se la variabile $Knw
non è uguale a $null
, il che significa che è stata trovata una corrispondenza nel file.
Se viene trovata una corrispondenza, stampa "Contains String."
. Se non viene trovata nessuna corrispondenza, stampa "Does not Contain String."
.
Output:
Contains String
Poiché il nostro file contiene il modello "Demonstration"
, l’output stampa Contains String
.
Controllare se un file contiene una stringa specifica utilizzando Get-Content
in PowerShell
Get-Content
è un cmdlet che recupera il contenuto di un percorso specificato a un file e legge il contenuto del file per restituire un oggetto stringa. Per utilizzare Get-Content
nel nostro file Demo.txt
, utilizzeremo lo script illustrato di seguito:
Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"
In questo script, utilizziamo Get-Content
per leggere il contenuto del nostro file Demo.txt
specificato dal parametro -Path
e lo indirizziamo al comando Select-String
, che utilizza il parametro -Pattern
per individuare la stringa Demonstration
.
Output:
This purely for demonstration
Se vogliamo solo confermare la presenza della stringa, possiamo utilizzare lo script mostrato di seguito:
If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
echo Contains String
}
else {
echo Does not Contains String
}
In questo script, utilizziamo Get-Content
per leggere i dati del file situato in C:\Users\pc\Demo\Demo.txt
e una pipeline (|
) per elaborare ciascuna riga del file una alla volta. All’interno del blocco %{}
, controlliamo se ciascuna riga contiene la stringa "Demonstration"
utilizzando l’operatore -match
.
Se una qualsiasi riga nel file contiene "Demonstration"
, stampa "Contains String"
. Se nessuna riga nel file contiene "Demonstration"
, stampa "Does not Contains String"
.
Output:
Contains String
Poiché il nostro file contiene la stringa specificata ("Demonstration"
), otteniamo Contains String
come output.
Controllare file multipli che contengono una stringa specifica
E se avessi più di cinquanta file di testo e volessi cercare una stringa in tutti? Discuteremo due modi per farlo.
Utilizzando Get-ChildItem
e Search-String
in PowerShell
Possiamo utilizzare i cmdlet Get-ChildItem
e Select-String
. Il cmdlet Get-ChildItem
troverà uno o più file in base ai nostri criteri di ricerca.
Diamo un’occhiata a un esempio. Supponendo che la nostra cartella Demo
contenga più di cinquanta file di testo, possiamo cercare la stringa Demonstration
in tutti loro utilizzando questo script:
Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'
In questo script, utilizziamo Get-ChildItem
per elencare i file nella directory specificata (-Path
) e nelle sue sottodirectory (-Recurse
). L’operatore pipe (|
) passa l’elenco dei file al cmdlet Select-String
.
Infine, utilizziamo Select-String
per cercare un modello specifico, 'Demonstration'
in ciascun file.
La console stamperà i nomi dei file che contengono la nostra stringa, i numeri di riga e le righe contenenti la stringa.
Output:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Utilizzando Select-String
in PowerShell
Possiamo anche utilizzare Select-String
solo per controllare la stringa specifica su più file.
Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'
In questo script, utilizziamo il carattere jolly (*
) nel parametro -Path
per cercare tutti i file di testo nella cartella Demo
. Il cmdlet Select-String
cercherà la stringa in tutti i file corrispondenti.
Output:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Come nel caso precedente, la console stamperà i nomi dei file contenenti la nostra stringa, i numeri di riga e le righe contenenti la stringa.
Conclusione
Windows PowerShell fornisce un insieme di strumenti per cercare in modo efficiente stringhe in file di testo. Che tu preferisca utilizzare Select-String
, Get-Content
o una combinazione di Get-ChildItem
e Select-String
, puoi facilmente localizzare e manipolare i dati all’interno dei tuoi file.
Con questi cmdlet, non avrai problemi a trovare le informazioni di cui hai bisogno, rendendo le ricerche nei file di testo in PowerShell senza sforzo.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn