Filtrar archivos y carpetas con PowerShell

  1. Filtrar archivos usando el cmdlet Get-ChildItem en PowerShell
  2. El alias Get-ChildItem
  3. Obtenga todos los archivos dentro de los subdirectorios usando el cmdlet Get-ChildItem en PowerShell
  4. Filtrar archivos con condiciones específicas utilizando el cmdlet Get-ChildItem en PowerShell
Filtrar archivos y carpetas con PowerShell

Habrá situaciones en las que necesitemos verificar si existen archivos dentro de una ubicación o directorio específico. Aunque podemos usar el comando heredado dir, no sería suficiente exportar solo archivos específicos. Podemos usar el cmdlet Get-ChildItem de Windows PowerShell para este caso de uso.

Este artículo discutirá el cmdlet de PowerShell Get-ChildItem que usaremos para obtener todos los elementos dentro del directorio y utilizar sus parámetros de cambio de filtro.

El cmdlet Get-ChildItem de Windows PowerShell obtiene los elementos secundarios en una ubicación o directorio específico. Por ejemplo, la ubicación especificada en el cmdlet puede ser el directorio del sistema de archivos, el registro o el almacén de certificados. Además, los elementos secundarios mencionados pueden ser otro directorio, subcarpeta o archivo.

Get-ChildItem -Path C:\Temp

En el comando anterior, Get-ChildItem obtiene elementos secundarios de la ruta especificada mediante el parámetro -Path.

Cuando se ejecuta el cmdlet Get-ChildItem, muestra archivos, directorios con sus propiedades Mode, LastWriteTime, Length (tamaño de archivo) y Name en la consola de PowerShell.

Mode                 LastWriteTime         Length Name                                
----                 -------------         ------ ----
d----l        18/01/2022   8:52 pm                WindowsPowerShell
d----l        20/12/2021   3:36 pm                Zoom
-a---l        30/12/2020   3:23 pm          (151) backup phrase.txt
-a---l        17/06/2021   3:13 am       (410049) CEF1750.pdf
-a---l        16/05/2020   3:32 am          (677) default.cpu1
-a---l        21/08/2019   9:06 am         (2240) Default.rdp
-a---l        26/05/2021   8:24 am        (63399) e-sig.jpg
-a---l        09/03/2020  10:48 pm          (143) fan config.sfsm
-a---l        19/09/2020  12:07 pm    (279515089) MCSA.rar

Filtrar archivos usando el cmdlet Get-ChildItem en PowerShell

Podemos usar el parámetro de cambio -File para devolver solo archivos dentro de una ruta o directorio.

Código de ejemplo:

Get-ChildItem -Path C:\Temp -File

Producción :

Mode                 LastWriteTime         Length Name                                
----                 -------------         ------ ----
-a---l        30/12/2020   3:23 pm          (151) backup phrase.txt 
-a---l        17/06/2021   3:13 am       (410049) CEF1750.pdf
-a---l        16/05/2020   3:32 am          (677) default.cpu1
-a---l        21/08/2019   9:06 am         (2240) Default.rdp
-a---l        26/05/2021   8:24 am        (63399) e-sig.jpg
-a---l        09/03/2020  10:48 pm          (143) fan config.sfsm
-a---l        19/09/2020  12:07 pm    (279515089) MCSA.rar

El alias Get-ChildItem

Windows PowerShell usa un alias integrado predeterminado gci para el cmdlet Get-ChildItem. Al igual que el fragmento de código de ejemplo a continuación, puede usar el alias en lugar del cmdlet para una secuencia de comandos más rápida y sin problemas.

Código de ejemplo:

gci -Path C:\Temp -File

Obtenga todos los archivos dentro de los subdirectorios usando el cmdlet Get-ChildItem en PowerShell

Si queremos obtener todos los archivos en directorios y subdirectorios, use el parámetro de cambio -Recurse.

Código de ejemplo:

gci -Path C:\Temp -Recurse - Force -File

Nota: El parámetro -Force permite que el cmdlet obtenga elementos a los que el usuario no puede acceder de otro modo, como archivos del sistema o archivos ocultos. El parámetro Force no anula las restricciones de seguridad. La implementación varía entre los proveedores.

Filtrar archivos con condiciones específicas utilizando el cmdlet Get-ChildItem en PowerShell

Usando el parámetro -Filter, podemos filtrar los resultados usando una sola expresión. El parámetro -Filter no requiere el parámetro -Path, ya que utilizará su directorio de trabajo actual.

Código de ejemplo:

gci -Filter C:\Temp\* -Filter *.txt 

También podemos usar los parámetros del interruptor -Include, que acepta múltiples condiciones, una excelente ventaja para el parámetro -Filter. Sin embargo, recuerde que el parámetro -Include requiere que el parámetro -Path esté presente en la expresión.

Código de ejemplo:

gci -Path C:\Temp\* -File -Include CEF*.pdf, *.txt 

Además de aceptar múltiples condiciones, el parámetro -Include funciona bien con expresiones regulares, lo que lo convierte en un método más versátil que el parámetro -Filter.

Producción :

Mode                 LastWriteTime         Length Name                                
----                 -------------         ------ ----
-a---l        30/12/2020   3:23 pm          (151) backup phrase.txt
-a---l        17/06/2021   3:13 am       (410049) CEF1750.pdf

Nota: La ruta debe incluir un asterisco comodín (*) al final cuando se utiliza el parámetro de cambio -Include. Este comodín indica que está consultando todos los elementos secundarios de la ruta que tienen la extensión específica definida en el parámetro -Include.

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artículo relacionado - PowerShell File

Artículo relacionado - PowerShell Directory