Como procurar arquivos por tamanho e extensão?

5

Eu quero excluir todos os arquivos vazios com uma extensão específica de um diretório e todos os seus subdiretórios.

    
por Framester 15.02.2012 / 18:07

2 respostas

10

Você pode tentar o seguinte, para confirmar ao excluir cada arquivo primeiro:

$ find /path/to/dir -type f -name "*.txt" -empty -ok rm {} \;

ou se você se sentir mais confiante:

$ find /path/to/dir -type f -name "*.txt" -empty -exec rm {} \;
    
por 15.02.2012 / 18:13
6

Normalmente, a resposta para "como eu faço… em um diretório e seus subdiretórios" envolve find . Use -type f para corresponder aos arquivos regulares, -name '*.ext' para restringir a uma extensão específica e -size 0 para restringir a arquivos vazios.

find /some/dir -name '*.ext' -type f -size 0 -exec rm {} +

Se a sua versão de find for muito antiga, você pode precisar de '… -exec rm {} \;' em vez disso (usar + é mais rápido porque chama rm em muitos arquivos de uma só vez). No Linux, FreeBSD, NetBSD e OSX, você pode usar a ação find do -delete e o predicado -empty (equivalente a -size 0 nos arquivos regulares):

find /some/dir -name '*.ext' -type f -empty -delete

Em zsh, você pode usar o ** glob para recursar em subdiretórios e qualificadores para restringir as correspondências a arquivos regulares ( . ), de tamanho 0 ( L0 ).

rm /some/dir/**/*.ext(.L0)
    
por 16.02.2012 / 02:35