MoveFilesFromOneDirectoryToAnotherBasedOnfileCriteria

$oldyear="2020"
$newyear="2021"
$baseDir = "c:\tmp\ejemplo\$newyear\"
#Filtraremos por ficheros que empiecen por
$NameToFind = "F.20."
#buscamos en la carpeta del 2021 los ficheros que cumplan el criterio, aunque esten en subdirectorios!!!
$filesMatching = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -eq $false -and $_.Name.Contains($NameToFind) } 

$dirUnSorted=@()
foreach($file in $filesMatching){
    #Write-Host $file.Directory.Name
    $dirUnSorted+=$file.Directory.Name
}
#now we make unique the parent's directories
$dirSorted= $dirUnSorted | Sort-Object | Get-Unique




$(foreach($dir in $dirSorted){

   #si no existe el directorio lo creamos
   If(!(test-path "c:\tmp\ejemplo\$oldyear\$dir\"))
   {
      New-Item -ItemType Directory -Force -Path "c:\tmp\ejemplo\$oldyear\$dir\"
   }
   #movemos los elementos que cumplan en criterio
   move-item -Path "c:\tmp\ejemplo\$newyear\$dir\F.20.*.pdf" -Destination "c:\tmp\ejemplo\$oldyear\$dir\"  -PassThru
})