Este tutorial discutirá métodos rápidos que você pode usar em um script bash para obter o tamanho do arquivo no formato especificado, como bytes, kilobytes, megabytes ou gigabytes.
Método 1: O comando LS
O primeiro método é usar o bom e velho comando ls. Quando combinado com outros comandos, o comando ls pode pegar o tamanho de um arquivo.
Para implementar o script, precisamos do caminho completo do arquivo, listar as informações do arquivo com LS e pegar o tamanho usando um comando como awk.
Um script de amostra para isso ficaria assim:
#!/BIN/BASH
eco "insira o caminho completo para o arquivo."
Leia o arquivo
filesize = $ (ls -lh $ file | awk 'print $ 5')
eco "$ arquivo tem um tamanho de $ fileSize"
O script acima é relativamente simples. Usando o comando Echo e Read, obtemos o nome do caminho completo do arquivo.
Em seguida, usamos o comando LS -LH para listar todos os diretórios e o tamanho em formato legível por humanos e, finalmente, passar a saída para Awk e pegar o tamanho como o 5º variável.
A seguir é uma ilustração do script.
Tamanho Chmod +X.shAqui está a saída para isso:
sudo ./tamanho.shMétodo 2: o comando WC
Outro método que podemos usar para pegar o tamanho de um arquivo em um script bash é o comando WC. O comando WC retorna o número de palavras, tamanho e tamanho de um arquivo em bytes.
Agora:
Como você sabe, ler o tamanho do arquivo em bytes não é muito fácil. Para combater isso, podemos implementar um menu simples e perguntar ao usuário o formato de tamanho como KB, MB e GB.
Dependendo do formato selecionado, converteremos os bytes para o referido formato.
Aqui está um exemplo de script para implementar essa lógica:
#!/BIN/BASH
eco "Selecionar formato de tamanho, use valores numéricos (1 para bytes, 2 para kilobytes, etc.) "
eco "" "
1. Bytes
2. Kilobytes
3. Megabytes
4. Gigabytes
"" "
eco "************************************************** ************************ "
Leia o formato
eco "Digite o caminho completo para o arquivo de destino:"
Leia o arquivo
filesize = $ (wc -c $ file | awk 'print $ 1')
se [[("$ format" == 1)]];
então
eco "o arquivo $ é aprox $ fileSize bytes"
elif [[("$ format" == 2)]];
então
KB = $ (BC <<<"scale=3; $filesize / 1024")
eco "o arquivo $ é aproximadamente $ kb kb"
elif [[("$ format" == 3)]];
então
MB = $ (BC <<<"scale=6; $filesize / 1048576")
eco "o arquivo $ é aproximadamente $ MB MB"
elif [[("$ format" == 4)]];
então
GB = $ (BC <<<"scale=12; $filesize / 1073741824")
eco "o arquivo $ é aproximadamente $ GB GB"
outro
eco "formato incorreto."
saída
fi
No script acima, começamos pedindo ao usuário que insira o formato do tamanho do arquivo. Bash lê essa entrada e a armazena na variável de formato.
Em seguida, solicitamos ao usuário o caminho do arquivo e armazenamos essa variável em um arquivo.
A próxima etapa chama o wc -c -command no arquivo especificado. Como o WC -C retorna o tamanho do arquivo em bytes e o caminho do arquivo, usamos awk para pegar apenas o tamanho do arquivo. Armazenamos o tamanho em bytes como tamanho do arquivo.
Finalmente, implementamos uma instrução IF simples para verificar se o formato de tamanho é 1 (bytes), 2 (Kilobytes), 3 (megabytes), 4 (Gigabyte). Em seguida, usamos o comando bc para converter o tamanho do arquivo em bytes no formato especificado.
OBSERVAÇÃO: Utilizamos uma escala de variância para o comando BC para acomodar o número de decimais por avaliação.
A imagem abaixo mostra como o script funciona.
Outra nota: O script acima é puro e, portanto, está aberto a melhorias significativas. Sinta -se à vontade para melhorá -lo e ajustá -lo às suas necessidades.
Método 3: Usando o comando de stat
Não podemos esquecer o comando de estatística. Usando o comando stat, podemos exibir informações detalhadas sobre um arquivo ou o sistema de arquivos.
O comando STAT retorna o tamanho em bytes também. Você pode usar lógica semelhante no script acima para selecionar o formato.
Aqui está um script simples usando o comando stat:
#!/BIN/BASH
eco "Digite o caminho do arquivo."
Leia o arquivo
filesize = ”$ (stat -c %s $ arquivo)
eco "o arquivo $ é preciso $ filesize bytes."
Para encerrar
Este tutorial discutiu três métodos que você pode usar para obter o tamanho de um arquivo usando um script bash. É bom observar que o Linux tem uma coleção abrangente de ferramentas e métodos para conseguir isso. Encontre o que funciona para você e fique com ele.