Como obter o tamanho de um arquivo em um script Bash

How Get Size File Bash Script



Ao escrever scripts de shell, podemos nos deparar com uma situação em que precisamos saber o tamanho de um arquivo. Por exemplo, você pode precisar usar esse tamanho para realizar outras ações, como mover o arquivo para um diretório diferente ou excluí-lo.

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 emparelhado com outros comandos, o comando ls pode capturar o tamanho de um arquivo.



Para implementar o script, precisamos do caminho completo do arquivo, listar as informações do arquivo com ls e obter o tamanho usando um comando como o awk.



Um exemplo de script para isso seria assim:





#! / bin / bash
jogou fora 'Digite o caminho completo para o arquivo.'
leitura Arquivo
tamanho do arquivo= $(ls -lh $ file | awk '{imprimir $ 5}')
jogou fora '$ filetem 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 e, finalmente, passamos a saída para awk e pegamos o tamanho como 5ºvariável.



A seguir está uma ilustração do script.

chmod + x size.sh
./size.sh

Aqui está a saída para isso:

sudo ./size.sh
Insira o caminho completo para o arquivo
/ etc / passwd
/ etc / passwd tem um tamanho de 2,9K

Método 2: O comando wc

Outro método que podemos usar para obter o tamanho de um arquivo em um script bash é o comando wc. O comando wc retorna o número de palavras, o tamanho e o 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 do tamanho, como KB, MB e GB.

Dependendo do formato selecionado, converteremos os bytes para esse formato.

Aqui está um script de exemplo para implementar essa lógica:

#! / bin / bash
jogou fora 'Selecione o formato do tamanho, use valores numéricos (1 para bytes, 2 para kilobytes, etc.)'
jogou fora '''
1. Bytes
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
jogou fora '************************************************* * *********************** '
leituraformato

jogou fora 'Digite o caminho completo para o arquivo de destino:'
leitura Arquivo
tamanho do arquivo= $(banheiro -c $ file | awk '{imprimir $ 1}')
E se [[('$ format'==1)]];
então
jogou fora '$ fileé aprox$ filesizeBytes '
elif [[('$ format'==2)]];
então
Aproximadamente= $(ac <<<'escala = 3;$ filesize/ 1024 ')
jogou fora '$ fileé aproximadamente$ kbKB '
elif [[('$ format'==3)]];
então
MB= $(ac <<<'escala = 6;$ filesize/ 1048576 ')
jogou fora '$ fileé aproximadamente$ mbMB '

elif [[('$ format'==4)]];
então
gb= $(ac <<<'escala = 12;$ filesize/ 1073741824 ')
jogou fora '$ fileé aproximadamente$ gbGB '
outro
jogou fora 'Formato incorreto.'
saída
ser

No script acima, começamos pedindo ao usuário para inserir o formato do tamanho do arquivo. O 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 comando wc -c-no arquivo especificado. Como wc -c retorna o tamanho do arquivo em bytes e o caminho do arquivo, usamos AWK para capturar apenas o tamanho do arquivo. Armazenamos o tamanho em bytes como o tamanho do arquivo.

Finalmente, implementamos uma instrução if simples para verificar se o formato do tamanho é 1 (Bytes), 2 (Kilobytes), 3 (Megabytes), 4 (Gigabyte). Em seguida, usamos o comando bc para converter o tamanho do arquivo em bytes para o formato especificado.

NOTA: Usamos uma escala variável 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 barebones 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 stat

Não podemos esquecer o comando stat. Usando o comando stat, podemos exibir informações detalhadas sobre um arquivo ou sistema de arquivos.

O comando stat retorna o tamanho em bytes também. Você pode usar uma lógica semelhante no script acima para selecionar o formato.

Aqui está um script simples usando o comando stat:

#! / bin / bash
jogou fora 'Digite o caminho do arquivo.'
leitura Arquivo
tamanho do arquivo= $(Estado -c %s$ file)
jogou fora '$ fileé preciso$ filesizebytes. '

No Fechamento

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 possui uma coleção abrangente de ferramentas e métodos para fazer isso. Encontre aquele que funciona para você e continue com ele.