Script para encontrar arquivos vazios no diretório atual? [duplicado]

0

Estou tentando escrever um script que possa procurar no diretório atual por arquivos vazios, seguido por uma contagem dos arquivos vazios. Eu também preferiria que os arquivos fossem um por linha da saída. Por exemplo, a saída do programa seria semelhante a:

Empty files are:
file1.pdf
file4.cpp
example-file
Number of empty files: 3
    
por Taylor Stevens 05.04.2017 / 00:35

3 respostas

1

Se você não precisa reciclar (por exemplo, descer / contar arquivos vazios dentro de subdiretórios), basta usar os testes de arquivo padrão, por exemplo,

n=0
for f in *; do 
  [[ -f "$f" ]] && [[ ! -s "$f" ]] && { echo "$f"; ((n++)); } 
done 
echo "Number of empty files: $n"

De help test :

  -f FILE        True if file exists and is a regular file.
  -s FILE        True if file exists and is not empty.
    
por steeldriver 05.04.2017 / 01:08
0

O tamanho do arquivo vazio é normalmente zero. Então, a execução do seguinte script ajudará a encontrar os arquivos vazios

find /home/ -type f -size oc -exec ls {} \;

Como unidades você pode usar:

b – for 512-byte blocks (this is the default if no suffix is used)
c – for bytes
w – for two-byte words
k – for Kilobytes (units of 1024 bytes)
M – for Megabytes (units of 1048576 bytes)
G – for Gigabytes (units of 1073741824 bytes)

eu criei alguns arquivos vazios e guardei no seguinte diretório

/home/um/Documents/hello

Agora vamos ver todos os arquivos vazios que eu criei

cd /home/um/Documents/hello Este comando muda o diretório para olá

ls -sh Lista todos os arquivos incluindo o tamanho em formato legível por humanos em /home/um/Documents/hello

% bl0ck_qu0te%

No entanto, o tamanho desses arquivos está no intervalo de 0 a 20 kb. Tenho certeza de que esses arquivos estão vazios

Portanto, é possível classificar todos os arquivos com base no tamanho.

find /home/um/Documents/hello -type pdf -size -20k -exec ls -lh {} \;

Classifica todos os arquivos menores que 20kb

    
por A Umar Mukthar 05.04.2017 / 01:58
0

Você pode usar o comando find para procurar por arquivos vazios

find . -maxdepth 1 -type f -empty | tee /dev/tty | wc -l

Onde

  • -maxdepth 1 apenas procura no diretório atual e não nos subdiretórios
  • -type f procura apenas por arquivos, não por diretórios
  • -empty verifica arquivos vazios
  • tee /dev/tty envia o nome do arquivo para o terminal e para wc
  • wc -l conta os arquivos

Veja man find para mais informações.

    
por Nick Rodriguez 05.04.2017 / 00:49