Então, eu tenho um diretório preenchido com outros diretórios e fiquei pensando se era possível remover arquivos que não têm tamanho. Normalmente, esses arquivos são 0 bytes e, como desejo mesclar todos esses subdiretórios, eu poderia substituir um arquivo perfeitamente legítimo por um arquivo de 0 byte sem peso, e lá vai meu arquivo legítimo. Alguma maneira de remover os arquivos de zero byte?
command-line
files
user245115
fonte
fonte
-empty
vez de-size 0b
.Localize e remova todos os arquivos com o tamanho 0 recursivamente:
Exemplo:
fonte
Você também pode fazer isso diretamente no shell. Isso pode ser útil se você não desejar excluir arquivos ocultos vazios (aqueles cujo nome começa com a
.
). Embora você também possa fazer issofind
, uma alternativa seria usar o próprio shell:Explicação
shopt -s globstar
: ativa a opção globstar para bash, que faz**
corresponder um ou mais subdiretórios.**/*
corresponderá a todos os arquivos e diretórios no diretório atual e a todos os seus subdiretórios.for file in **/*; do ...; done
: repete todos os arquivos e diretórios encontrados;[ ! -s "$file" ]
:[ -s "$file" ]
é verdadeiro se o arquivo existir e não estiver vazio. Portanto,[ ! -s "$file" ]
(!
inverte o teste) é verdadeiro se o arquivo não existir ou se estiver vazio.[ -f "$file" ]
: true se o arquivo for regular. Não é um diretório ou arquivo de dispositivo ou link simbólico etc.rm "$file"
: exclua o arquivo.A
&&
garantir que o próximo comando é executado somente se o anterior foi bem sucedida até isso só vai apagar, arquivos regulares vazias.fonte
Embora a maioria das respostas acima esteja correta, observe este comando:
embora você possa executar este comando:
isso excluirá todos os arquivos vazios.
Você pode dar uma olhada nesses arquivos antes de excluir:
fonte
-type f
,-empty
também excluirá diretórios vazios. Apenas verifiquei a página de manual.