Búsqueda de sitios web

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.txt

Get-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*" -File

PRODUCCIÓ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

Esta vez, el comando recuperó todos los archivos cuyos nombres comenzaban con la palabra archivo. Recuerde, el parámetro -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 -Recurse

PRODUCCIÓ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 -Recurse

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.txt

Directory: E:\Test\Sample Files\FolderA

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         3/28/2023   3:59 PM            652 file.txt

Mire 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 1

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.txt

Esta 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 -ErrorAction y establecer su valor en SilentyContinue. Recuerde, Get-ChildItem no obtiene archivos ocultos; utilice el parámetro -Force para 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.txt

Este 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 -Path es 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 -Depth cuyo valor se establece en 1.
  • |: se utiliza para reenviar la salida del cmdlet Get-ChildItem al siguiente proceso.
  • ?: Es un alias del Where-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.txt

Utilice 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.txt

Utilice 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.txt

Si no conoce los alias de un cmdlet en particular, puede utilizar el comando Get-Alias -Definition Get-ChildItem para obtener los alias disponibles. En este comando, obtuvimos todos los alias para Get-ChildItem; No olvide reemplazar Get-ChildItem con 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.txt

Tambié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.txt

Los 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.txt

PowerShell 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-ChildItem para recuperar los elementos.
  • Utilice el objeto donde con el operador clike para 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.txt

Se trata de buscar archivos por nombre en PowerShell.

Artículos relacionados