2011-12-30 28 views

risposta

266

Utilizzare il Get-ChildItem cmdlet con l'interruttore -Recurse:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force 
+0

sembra avere un problema che, se viene eseguito in una directory a cui non si ha il permesso di accedere, l'intera ricerca viene interrotta perché il processo termina. C'è un modo per aggirare questo? – deed02392

+4

Provare a impostare il parametro ErrorAction su Continue o SilentlyContinue (nel caso il suo valore non sia menzionato come indicato). –

+11

Un modo più breve per fare esattamente la stessa cosa: 'cd V: \ MyFolder' seguito da ' ls -r -inc CopyForBuild.bat' –

2

Prova questo:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse | Where-Object { $_.Attributes -ne "Directory"} 
+1

Puoi anche usare' | Where-Object {!$ _PSIsContainer} 'per escludere le cartelle – Gargravarr

8
Get-ChildItem V:\MyFolder -name -recurse *.CopyForbuild.bat 

Sarà anche lavorare

21

So che la domanda è vecchio, ma potrei non fare un commento alla risposta di Shay Levy.

Durante la ricerca cartelle in cui si potrebbe ottenere un errore sulla base di sicurezza (ad esempio C:\Users) utilizzare il seguente comando:

Get-ChildItem -Path V:\Myfolder -Filter CopyForbuild.bat -Recurse -ErrorAction SilentlyContinue -Force 
4

Filtro utilizzando caratteri jolly

Get-ChildItem -Filter CopyForBuild* -Include *.bat,*.cmd -Exclude *.old.cmd,*.old.bat -Recurse 

Filtering utilizzando Regex

Get-ChildItem -Path "V:\Myfolder" -Recurse 
| Where-Object { $_.Name -match '\ACopyForBuild\.[(bat)|(cmd)]\Z' } 
13

Io lo uso per trovare i file e quindi avere PowerShell visualizzare il intero percorso dei risultati:

dir -Path C:\FolderName -Filter FileName.fileExtension -Recurse | %{$_.FullName} 

È sempre possibile utilizzare il carattere jolly * nella FolderName e/o FileName.fileExtension. Per esempio:

dir -Path C:\Folder* -Filter File*.file* -Recurse | %{$_.FullName} 

L'esempio sopra cercherà qualsiasi cartella nel drive C:\ che inizia con la parola Folder. Pertanto, se si dispone di una cartella denominata FolderFoo e FolderBar, PowerShell mostrerà i risultati di entrambe le cartelle.

Lo stesso vale per il nome del file e l'estensione del file. Se si vuole cercare un file con una determinata estensione, ma non si conosce il nome del file che è possibile utilizzare:

dir -Path C:\FolderName -Filter *.fileExtension -Recurse | %{$_.FullName} 

O viceversa:

dir -Path C:\FolderName -Filter FileName.* -Recurse | %{$_.FullName} 
+2

Trovo che questa risposta sia estremamente utile perché si rivolge a un caso d'uso particolare - in realtà volendo utilizzare il file che si sta cercando. Il | per darti il ​​nome completo del file manca qualcosa nelle altre risposte. – Sanity1123

Problemi correlati