sobrescrevendo arquivos específicos em uma árvore de diretórios recursivamente

1

Gostaria de substituir os arquivos em uma árvore de diretórios, de forma recursiva.

As que eu gostaria de sobrescrever correspondem ao nome do arquivo "x_alpha * .png" e tem um tamanho exatamente 456 bytes .

Existe alguma maneira de procurá-los recursivamente em uma árvore de diretórios e sobrescrevê-los com um arquivo de referência, por exemplo, "e:\mydir\good.png"

Estou usando o Windows 7, mas tenho UnxUtils para que eu possa usá-los também.

O que estou procurando é algo assim gerado automaticamente:

copy /y e:\mydir\good.png e:\mydir\a\b\c\x_alpha0023.png
copy /y e:\mydir\good.png e:\mydir\e\f\g\x_alpha0045.png
copy /y e:\mydir\good.png e:\mydir\h\x_alpha0248.png
    
por hyperknot 19.07.2011 / 16:18

2 respostas

0

Você também pode fazer isso no Power Shell desde que esteja usando o Windows 7.

dir -recurse x_alpha*.png | where-object { $_.Length -eq 456 } | foreach-object { copy-item -force e:\mydir\good.png $_.FullName }
dir -recurse x_alpha*.png   (to see the results)
    
por 19.07.2011 / 18:49
1

Eu não conheço o UnxUtils, mas isso pode ser feito com o cygwin com:

find /cygdrive/e/mydir/ -type f -name "x_alpha*.png" -size 456c -exec cp /cygdrive/e/mydir/good.png {} \;

Você provavelmente poderia extrapolar como fazer isso com o UnxUtils.

Teste primeiro executando o seguinte antes de substituir os arquivos:

find /cygdrive/e/mydir/ -type f -name "x_alpha*.png" -size 456c
    
por 19.07.2011 / 18:37