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.

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