PowerShell Buscar archivo por nombre [6 formas]
Usando el cmdlet Get-ChildItem
Utilice el cmdlet Get-ChildItem con los parámetros -Path y -Filter para buscar los archivos y directorios especificados en la ruta indicada en PowerShell. .
Utilice el cmdlet Get-ChildItem:
Get-ChildItem -Path "E:\Test" -Filter "file*"PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/25/2023 7:22 AM File
-a---- 3/10/2023 12:42 AM 33629 file - Copy.doc
-a---- 3/11/2023 10:31 PM 165792 file - Copy.pdf
-a---- 3/10/2023 12:42 AM 33629 file.docx
-a---- 3/11/2023 10:31 PM 165792 file.pdf
-a---- 4/6/2023 5:50 AM 168 file.ps1
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txtGet-ChildItem recupera elementos y elementos secundarios de una o varias rutas (ubicaciones). El parámetro -Path se utiliza para especificar una o varias rutas a ubicaciones; También podemos usar caracteres comodín al usar este parámetro. La ubicación predeterminada para el parámetro -Path es el directorio actual (.).
El parámetro -Filter filtra archivos y directorios desde la ubicación especificada según el comodín o patrón. Tenga en cuenta que el parámetro -Filter es más rápido que los parámetros -Exclude y -Include porque filtra en el lado del servidor en lugar de en el lado del cliente. Además, significa que el proveedor de PowerShell realiza el filtrado; por ejemplo, proveedor de FileSystem en lugar del motor PowerShell.
El comando anterior buscó todos los archivos y directorios cuyo nombre comienza con la palabra file en la ruta E:\Test; el carácter comodín * significa al menos uno o más caracteres.
Utilice el cmdlet Get-ChildItem con el parámetro -File
Utilice el cmdlet Get-ChildItem con los parámetros -Path, -Filter y -File para recuperar archivos solo desde la ruta especificada en PowerShell.
Utilice el parámetro Get-ChildItem -File:
Get-ChildItem -Path "E:\Test" -Filter "file*" -FilePRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/10/2023 12:42 AM 33629 file - Copy.doc
-a---- 3/11/2023 10:31 PM 165792 file - Copy.pdf
-a---- 3/10/2023 12:42 AM 33629 file.docx
-a---- 3/11/2023 10:31 PM 165792 file.pdf
-a---- 4/6/2023 5:50 AM 168 file.ps1
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txtEsta vez, el comando recuperó todos los archivos cuyos nombres comenzaban con la palabra -File está disponible únicamente en el proveedor del sistema de archivos.
En los ejemplos anteriores, obtuvimos archivos de la ruta E:\Test, pero podemos usar el parámetro -Recurse para recuperar todos los archivos del directorio dado y sus subdirectorios. ; consulte la siguiente sección.
Utilice el cmdlet Get-ChildItem con el parámetro -Recurse
Utilice el cmdlet Get-ChildItem con -Path, -Filter, -File y -Parámetros-Recurse para recuperar archivos solo del directorio especificado y sus subdirectorios en PowerShell.
Utilice Get-ChildItem con el parámetro -Recurse:
Get-ChildItem -Path "E:\Test" -Filter "file*" -File -RecursePRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/10/2023 12:42 AM 33629 file - Copy.doc
-a---- 3/11/2023 10:31 PM 165792 file - Copy.pdf
-a---- 3/10/2023 12:42 AM 33629 file.docx
-a---- 3/11/2023 10:31 PM 165792 file.pdf
-a---- 4/6/2023 5:50 AM 168 file.ps1
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 3/28/2023 4:00 PM 73 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
Directory: E:\Test\Sample Files\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Obtuvimos todos los archivos cuyo nombre comienza con la palabra file de E:\Test, E:\Test\Sample Files y E:\Test\Sample Files\FolderA directorios. Por lo tanto, podemos asignar el parámetro -Filter a file*.txt para obtener todos los archivos .txt cuyos nombres comiencen con la palabra archivo; vea el siguiente ejemplo.
Utilice Get-ChildItem con el parámetro -Recurse:
Get-ChildItem -Path "E:\Test" -Filter "file*.txt" -File -RecursePRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 3/28/2023 4:00 PM 73 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
Directory: E:\Test\Sample Files\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txtMire los directorios en el resultado anterior. E:\Test es el directorio, E:\Test\Sample Files es el primer nivel de subdirectorios y E:\Test\Sample Files\FolderA< es el segundo nivel de subdirectorios. Ahora, piense en una situación en la que queremos buscar archivos por nombre en el directorio y el primer nivel de subdirectorios. ¿Cómo podemos hacerlo? Necesitamos usar el parámetro -Depth de la siguiente manera.
Utilice Get-ChildItem con el parámetro -Depth:
Get-ChildItem -Path "E:\Test" -Filter "file*.txt" -File -Recurse -Depth 1PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 3/28/2023 4:00 PM 73 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txtEsta vez, no obtuvimos un archivo de texto del segundo nivel de subdirectorios, que era E:\Test\Sample Files\FolderA.
Utilice Get-ChildItem con Where-Object
Utilice el cmdlet Get-ChildItem con el cmdlet Where-Object para buscar el archivo por nombre exacto y extensión en PowerShell.
Utilice Get-ChildItem con Where-Object:
Get-ChildItem -Path "E:\Test" -Recurse |
Where-Object {$_.Name -eq "file.txt"}PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Ya hemos aprendido sobre el cmdlet Get-ChildItem, el parámetro -Recurse y los niveles de directorios. Aquí, utilizamos Where-Object para iterar sobre la colección reenviada por Get-ChildItem a través de la canalización (|). Para cada elemento, recuperamos su nombre usando la propiedad Name y lo comparamos con el nombre de archivo "file.txt" usando el operador -eq. Si fuera igual, se incluiría en la salida; de lo contrario, no.
Si desea continuar con el comando especificado independientemente de los errores, puede utilizar el parámetro
-ErrorActiony establecer su valor enSilentyContinue. Recuerde,Get-ChildItemno obtiene archivos ocultos; utilice el parámetro-Forcepara recuperarlos.
Utilice Get-ChildItem con PSIsContainer
Utilice Get-ChildItem con PSISContainer para buscar un archivo por nombre en el directorio indicado en PowerShell.
Utilice Get-ChildItem con PSIsContainer:
Get-ChildItem . "file*.txt" -r -d 1 | ? {!$_.PSIsContainer}PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 3/28/2023 4:00 PM 73 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txtEste ejemplo es la solución más sencilla debido a la simplicidad de buscar un archivo por nombre en PowerShell. ¿Cómo? Déjame explicarlo a continuación:
Get-ChildItem: Ya lo hemos aprendido en secciones anteriores; se utiliza para recuperar elementos y elementos secundarios de una o varias ubicaciones..: se asigna al parámetro posicional-Path, y ya hemos aprendido que el directorio predeterminado del parámetro-Pathes el directorio actual representado por.. Debe estar en el directorio donde desea buscar archivos por nombre. "file*.txt": Es el patrón para el nombre del archivo requerido.-r: se asigna al parámetro-Recurse.-d 1: se asigna al parámetro-Depthcuyo valor se establece en1.|: se utiliza para reenviar la salida del cmdletGet-ChildItemal siguiente proceso.?: Es un alias delWhere-Object, que ya hemos aprendido.{!$_.PSIsContainer}: es una condición que filtra todos los elementos del contenedor, como los directorios.
Utilice alias Get-ChildItem
PowerShell incluye los alias dir y gci para todas las plataformas, mientras que ls es solo para Windows. Aprendamos cada uno de ellos a continuación.
Utilice el alias dir de Get-ChildItem con el cmdlet Where-Object para buscar el archivo por nombre exacto y extensión en PowerShell.
Use dir con Where-Object:
dir -Path "E:\Test" -Recurse |
Where-Object {$_.Name -eq "file.txt"}PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txtUtilice el alias gci de Get-ChildItem con el cmdlet Where-Object para buscar el archivo por nombre exacto y extensión en PowerShell.
Use gci con Where-Object:
gci -Path "E:\Test" -Recurse |
Where-Object {$_.Name -eq "file.txt"}PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txtUtilice el alias ls de Get-ChildItem con el cmdlet Where-Object para buscar el archivo por nombre exacto y extensión en PowerShell.
Utilice ls con el objeto Dónde:
ls -Path "E:\Test" -Recurse |
Where-Object {$_.Name -eq "file.txt"}PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
Directory: E:\Test\Sample Files\FolderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txtSi no conoce los alias de un cmdlet en particular, puede utilizar el comando
Get-Alias -Definition Get-ChildItempara obtener los alias disponibles. En este comando, obtuvimos todos los alias paraGet-ChildItem; No olvide reemplazarGet-ChildItemcon su cmdlet si está buscando un cmdlet de PowerShell diferente.
Usando el cmdlet Get-Item
Utilice el cmdlet Get-Item para buscar un archivo por nombre en la ubicación especificada en PowerShell. Usamos este cmdlet cuando no es necesario buscar en diferentes niveles de subdirectorios. Significa que los parámetros -Recurse y -Depth no funcionarán con este cmdlet.
Utilice el cmdlet Obtener elemento:
Get-Item "E:\Test\file.txt"PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txtTambién podemos utilizar caracteres comodín al escribir la ruta con el cmdlet Get-Item; vea el siguiente ejemplo.
Utilice el cmdlet Obtener elemento:
Get-Item "E:\Test\file*.txt"PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txtLos resultados del cmdlet Get-Item también se pueden canalizar al siguiente cmdlet, como se muestra a continuación.
Utilice el cmdlet Obtener elemento:
Get-Item "E:\Test\file*.txt" | Where-Object{$_.Name -eq "filez.txt"}PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 12:18 PM 54 filez.txtPowerShell Buscar archivo por nombre [distingue entre mayúsculas y minúsculas]
En caso de que desee buscar el archivo por nombre distinguiendo entre mayúsculas y minúsculas, estos son los pasos:
- Utilice
Get-ChildItempara recuperar los elementos. - Utilice el objeto donde con el operador
clikepara realizar una comparación de cadenas que distinga entre mayúsculas y minúsculas.
Utilice el cmdlet Obtener elemento:
Get-ChildItem -Path "E:\Test" | Where-Object { $_.Name -clike "file*"}PRODUCCIÓN :
Directory: E:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 3/28/2023 3:59 PM 652 file.txt
-a---- 4/16/2023 9:49 PM 48898 file1.txt
-a---- 3/28/2023 3:39 PM 23 file2.txt
-a---- 3/7/2023 8:16 AM 57 file4.txt
-a---- 3/28/2023 12:18 PM 70 filessss.txt
-a---- 3/28/2023 12:18 PM 54 filez.txtSe trata de buscar archivos por nombre en PowerShell.
