Búsqueda de sitios web

PowerShell: Cómo eliminar todos los archivos que no están en una lista


Puede utilizar la siguiente sintaxis en PowerShell para eliminar todos los archivos de un directorio que no pertenecen a una lista específica:

$keep = Get-Content keep.txt

gci ./data1 | Where-Object { $keep -notcontains $_.name } | Remove-Item

Este ejemplo en particular elimina todos los archivos en el directorio denominado data1 que no pertenecen a la lista de nombres de archivos especificados en el archivo keep.txt.

El siguiente ejemplo muestra cómo utilizar esta sintaxis en la práctica.

Ejemplo: Cómo eliminar todos los archivos que no están en una lista en PowerShell

Supongamos que queremos eliminar todos los archivos en un directorio llamado datos1 que no pertenecen a una lista de nombres de archivos contenidos en un archivo llamado keep.txt.

Podemos usar el cmdlet Get-Content para ver primero cada uno de los nombres de archivo en el archivo keep.txt:

Podemos ver que hay tres nombres de archivos guardados en el archivo keep.txt:

  • equipo.csv
  • entrenadores.csv
  • administradores.csv

A continuación, podemos usar el cmdlet gci (un alias de Get-ChildItem) para ver todos los archivos en un directorio llamado data1:

Podemos ver que hay seis archivos en total en este directorio.

Supongamos que queremos eliminar todos los archivos de este directorio que no pertenecen a la lista de nombres de archivos especificados en el archivo keep.txt.

Podemos utilizar la siguiente sintaxis para hacerlo:

$keep = Get-Content keep.txt

gci ./data1 | Where-Object { $keep -notcontains $_.name } | Remove-Item

La siguiente captura de pantalla muestra cómo utilizar esta sintaxis en la práctica:

Tenga en cuenta que cuando ejecutamos el comando gci nuevamente, podemos ver que todos los archivos en la carpeta data1 que no pertenecían a la lista de nombres de archivos especificados en keep El archivo .txt ha sido eliminado.

Artículos relacionados