encontrar arquivos que correspondam a um tamanho preciso: um múltiplo de 4096 bytes [duplicado]

2

Eu tenho vários sites drupal em execução na minha máquina local com o WAMP instalado (apache 2.2.17, php 5.3.4 e mysql 5.1.53). Sempre que tento visitar a página administrativa, o processo do php parece morrer. De apache_error.log:

[Fri Nov 09 10:43:26 2012] [notice] Parent: child process exited with status 255 -- Restarting.
[Fri Nov 09 10:43:26 2012] [notice] Apache/2.2.17 (Win32) PHP/5.3.4 configured -- resuming normal operations
[Fri Nov 09 10:43:26 2012] [notice] Server built: Oct 24 2010 13:33:15
[Fri Nov 09 10:43:26 2012] [notice] Parent: Created child process 9924
[Fri Nov 09 10:43:26 2012] [notice] Child 9924: Child process is running
[Fri Nov 09 10:43:26 2012] [notice] Child 9924: Acquired the start mutex.
[Fri Nov 09 10:43:26 2012] [notice] Child 9924: Starting 64 worker threads.
[Fri Nov 09 10:43:26 2012] [notice] Child 9924: Starting thread to listen on port 80.

Algumas pesquisas me levaram a um relatório de bug do php no 'bug de 4096 bytes' . Gostaria de ver se tenho algum arquivo cujo tamanho do arquivo é um múltiplo de 4096 bytes, mas não sei como fazer isso.

Eu tenho o gitBash instalado e posso usar a maioria das ferramentas típicas do Linux através dele (find, grep, etc), mas eu não estou familiarizado o suficiente com o linux para descobrir sozinho. Pouca ajuda?

    
por doub1ejack 09.11.2012 / 17:18

1 resposta

4

Como você está no Windows, pode fazer isso com o PowerShell

Get-ChildItem C:\PathToTopDirectory -recurse | ForEach-Object {    
  if(($_.length % 4096 -eq 0) -and (! $_.PSIsContainer)) {Write-Host $_.FullName}    
}

O que isto faz é obter uma lista de tudo abaixo do caminho no comando Get-ChildItem e avaliar cada objeto. Como as pastas não têm tamanho, queremos excluí-las, é isso que o -and (! $_.PSIsContainer) faz.

Então nós só precisamos ver se o tamanho do arquivo em bytes (que é a propriedade length, dividido por 4096 nos deixa com um zero restante, significando que o arquivo é um 4096 ou um múltiplo dele. Isso é o que o $_.length % 4096 -eq 0 bloco faz.

O cmdlet Write-Host gravará a saída na janela de comando. Você pode facilmente substituir isso por Out-File c:\stuff.txt se preferir ter em um arquivo de texto.

    
por 09.11.2012 / 17:29

Tags