Use find
:
find DFT*/OSZICAR -size -10c -printf "%hfind DFT*/OSZICAR -size -10c -exec sh -c 'rm -r $(dirname "$1")' sh {} \;
" | xargs -r0 rm -r
-
find
procura por todos os arquivos dentro de um diretórioDFT*
chamadoOSZICAR
, cujo tamanho de arquivo é menor que 10 bytes; oc
significa bytes. - Em seguida,
find
imprime o nome do diretório%h
em que o arquivo foi encontrado (DFT105
, por exemplo), finalizado por um byby%xargs
- Isso é canalizado para
-0
, que lê a linha terminada por um nullbyterm -r
e chamaxargs
em todos eles.
Eu recomendo chamar o comando sem a parte find
, para verificar se tudo funciona corretamente, antes de deletar qualquer coisa.
Editar: Se o seu -printf
não aceitar a opção %code% (como o OSX), use isso:
find DFT*/OSZICAR -size -10c -printf "%hfind DFT*/OSZICAR -size -10c -exec sh -c 'rm -r $(dirname "$1")' sh {} \;
" | xargs -r0 rm -r