Búsqueda de sitios web

PowerShell Buscar archivo (buscar archivos usando Get-ChildItem)


El cmdlet Get-ChildItem en PowerShell se utiliza para obtener elementos en una o más ubicaciones especificadas. Con Get-ChildItem, puede buscar archivos. Puede buscar archivos fácilmente por nombre y ubicación, buscar cadenas en archivos o encontrar ubicaciones de archivos utilizando un patrón de coincidencia.

Muy a menudo, almacenamos archivos en cualquier lugar del disco donde no deberían colocarse y, luego de unos meses, tenemos tantos archivos copiados en diferentes ubicaciones y permanecen desorganizados.

Si intentamos encontrar un archivo almacenado en cualquier lugar del disco, usar una búsqueda manual o un filtro de búsqueda proporcionado por Windows con caracteres comodín lleva mucho tiempo y genera más frustración.

En este artículo, explicaré las mejores y diferentes formas posibles de buscar archivos que coincidan con un patrón o buscar archivos por extensión en PowerShell.

PowerShell busca archivos usando Get-ChildItem

Usar el cmdlet Get-ChildItem de PowerShell para mostrar una lista de archivos o directorios en una o más ubicaciones.

El cmdlet Get-ChildItem proporciona más flexibilidad para que los comodines simples o avanzados busquen archivos mediante un patrón de búsqueda.

Uso del parámetro Recurse para obtener elementos de forma recursiva de todos los contenedores secundarios. Puede limitar el parámetro Profundidad para limitar el número de niveles que se repetirán.

Cmdlet: Get-ChildItem

Sintaxis:

Get-ChildItem
   [[-Filter] <string>]
   -LiteralPath <string[]>
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Recurse]
   [-Depth <uint32>]
   [-Force]
   [-Name]
   [-Attributes <FlagsExpression[FileAttributes]>]
   [-FollowSymlink]
   [-Directory]
   [-File]
   [-Hidden]
   [-ReadOnly]
   [-System]
   [<CommonParameters>]

Comprendamos el uso de PowerShell para buscar archivos por nombre, por extensión o buscar archivos de forma recursiva con diferentes ejemplos como se muestran a continuación.

¿Sabe usted?: ¡Usar IIS para obtener una lista de sitios web en PowerShell!

PowerShell Buscar archivos por extensión en el directorio actual

Para buscar todos los archivos por extensión en el directorio actual que coincidan con el patrón comodín *.txt

PS C:\Temp> Get-ChildItem *.txt

Comando anterior, busque archivos en el directorio actual que coincidan con la extensión .txt

PowerShell Encuentra todos los archivos en la raíz de la unidad D:\

Para buscar y enumerar todos los archivos almacenados en la unidad D:\ ubicación, utilice Get-ChildItem como se indica a continuación

PS C:\> Get-ChildItem -Path D:\

El cmdlet anterior Get-ChildItem toma D:\ como ruta y enumera todos los directorios y archivos almacenados en la ubicación. Muestra elementos de resultados con las columnas Modo, Hora de última escritura y Nombre de longitud.

PowerShell Buscar archivo de forma recursiva utilizando el parámetro Recurse

Para buscar y enumerar todos los archivos almacenados en la ubicación de la unidad D:\, utilice PowerShell Get-ChildItem con el parámetro Recurse en PowerShell.

PS C:\> Get-ChildItem -Path D:\ -Recurse

El uso del parámetro recursivo enumerará todos los archivos a los que el usuario tiene acceso; sin embargo, al realizar una operación recursiva, si el usuario no tiene acceso a ninguno de los elementos de recursos, se generará un error.

Para continuar con la operación Recurse incluso en caso de error, use el parámetro ErrorAction con silfullyContinue para continuar su operación.

PS C:\> Get-ChildItem -Path D:\ -Recurse -ErrorAction SilentlyContinue

Busque archivos que no coincidan utilizando el parámetro de exclusión

Para buscar todos los archivos en el directorio actual y en el subdirectorio que no coincidan con el comodín *.exe de PowerShell, podemos hacerlo usando el parámetro de exclusión.

PS D:\Temp> Get-ChildItem -Exclude *.exe -Recurse

El comando anterior, obtiene una lista de todos los archivos exclude*.exe en subdirectorios usando el parámetro recurse en PowerShell.

Obtenga una lista de todos los archivos en el directorio que coinciden con un patrón

Para obtener una lista de todos los archivos en el directorio y subdirectorio que coinciden con el patrón comodín de PowerShell *.doc,*.docx

PS D:\Temp> Get-ChildItem -Include *.doc,*.docx -File -Recurse -ErrorAction SilentlyContinue

En el ejemplo anterior, Get-ChildItem usa el parámetro Include para buscar archivos *.doc o *.docx en el directorio o sus subdirectorios usando Recurse . parámetro.

Utilice ErrorAction SilentlyContinue para continuar buscando archivos incluso sin tener errores.

El comando anterior, busca archivos y obtiene una lista de todos los archivos en un directorio en PowerShell.

Buscar archivo: todos los elementos de los subdirectorios coinciden con el filtro específico

Usando el parámetro -Filter para obtener una lista de todos los archivos de los subdirectorios que coinciden con el filtro *.txt

PS D:\Temp> Get-ChildItem -Filter *.txt -Recurse

Arriba del comando Get-ChildItem que utiliza el parámetro Recurse para iterar de forma recursiva en carpetas y subcarpetas y filtrar el parámetro con *.txt para obtener solo archivos con extensión de archivo *.txt.

Arriba, el script de PowerShell busca archivos de forma recursiva con extensión.

Consejo interesante: ¡Reemplace el texto en una cadena usando PowerShell!

PowerShell Buscar nombre de archivo que contiene una cadena

Para buscar todos los archivos que contienen una cadena en un directorio o subdirectorios determinados, utilice el siguiente comando

PS D:\Temp> Get-ChildItem -Recurse | Where {$_.Name -match 'Replace'} | Select Fullname

FullName                  
--------                  
D:\Temp\Replace-Method.txt

En el ejemplo anterior, Get-ChildItem utiliza el parámetro Recurse para buscar todos los archivos de forma recursiva.

Usar el cmdlet Where-Object para comparar la propiedad de nombre que coincide con "Reemplazar" y devuelve el nombre completo del archivo.

En el script anterior, busque una cadena en el archivo y obtenga el nombre del archivo que coincida con la cadena.

También podemos usar Get-ChildItem alias gci para consultar un nombre de archivo que contenga una cadena como se muestra a continuación

PS D:\Temp> gci -Recurse | Where {$_.Name -match 'Replace'} | Select Fullname

FullName                  
--------                  
D:\Temp\Replace-Method.txt

PowerShell Buscar archivos en el directorio que contiene una cadena

Para encontrar todos los archivos en el directorio que contienen cadenas, use el siguiente comando

PS D:\Temp> Get-ChildItem -Recurse | Where {$_.DirectoryName -match 'Debug'} | Select Fullname

En el ejemplo anterior, Get-ChildItem usa el parámetro Recurse para buscar recursivamente todos los archivos en el directorio.

Usar el cmdlet Where-Object para comparar la propiedad DirectoryName que coincide con "Debug" y devuelve el nombre completo de los archivos en ese directorio.

También podemos usar PowerShell Get-ChildItem alias gci para consultar y enumerar todos los archivos dentro del nombre del directorio que contienen una cadena como se muestra a continuación

PS D:\Temp> gci -Recurse | Where {$_.DirectoryName -match 'Debug'} | Select Fullname

PowerShell Buscar archivo por WildCard

Para buscar todos los archivos en el directorio o subdirectorios que coincidan con el comodín de PowerShell

PS D:\Temp> Get-ChildItem | Where-Object { $_.Name -match '[a-z].txt$' }


    Directory: D:\Temp


Mode                LastWriteTime         Length Name                                                        
----                -------------         ------ ----                                                        
-a----       10-07-2021     11:11            196 Replace-Method.txt  

En el ejemplo anterior, busca archivos usando el comodín de PowerShell como [a-z].txt$y obtiene una lista de todos los archivos.

Consejo interesante: ¡Parámetros ErrorAction y ErrorVariable en PowerShell!

PowerShell busca archivos con una antigüedad superior a días específicos

Para buscar archivos con una antigüedad superior a días específicos, use PowerShell Get-ChildItem para obtener objetos de archivo y comparar la fecha de creación del archivo con la fecha actual: 15 días.

 Get-ChildItem -File | Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-15)} | Select Name, CreationTime | sort CreationTime -Descending

En el script de PowerShell anterior, el primer comando obtiene el objeto de archivo y pasa el resultado al segundo comando.

El segundo comando, Where-Object compara la fecha de creación del archivo con la fecha actual: 15 días usando el cmdlet Get-Date y pasa el resultado al tercer comando.

El tercer comando selecciona el nombre del archivo y el formato de fecha y hora de creación del archivo y pasa el resultado al cuarto comando.

En el último comando, ordena la fecha y hora de creación del archivo de manera descendente y obtiene una lista de archivos con más de 15 días de antigüedad.

Conclusión

Espero que le resulte útil el artículo anterior sobre el uso del cmdlet Get-ChildItem de PowerShell para buscar archivos que coincidan con patrones de búsqueda o buscar archivos por extensión o nombre.

Intenté explicar diferentes formas de buscar archivos por comodín, archivo por nombre, archivo por ubicación o directorio, u obtener carpetas solo en el sistema de archivos.

Puede encontrar más temas sobre los comandos de PowerShell Active Directory y los conceptos básicos de PowerShell en la página de inicio de ShellGeek.

Artículos relacionados