Eu sei que posso usar ls -lat
para descobrir quantos bytes tem um arquivo e multiplicar por 8 para descobrir quantos bits. Mas isso é possível em apenas uma linha de comando?
bash
shell
command-line
filesystems
files
Felipe
fonte
fonte
Respostas:
Com o GNU
du
:fonte
bc
-awk
pode fazer a matemática em si:du -b FILE | awk '{print $1 * 8}
wc -c < FILE
para um equivalente portátil (para arquivos não-regulares, que tem o efeito colateral de lê-las, embora)Uma solução shell + GNU coreutils:
A
-c%s
opção destat
retornar apenas o tamanho do arquivo em bytes, eliminando a necessidade de processamento de texto adicional. Essa sintaxe é suportada pelo GNU coreutils e, portanto, deve funcionar na maioria das distribuições linux.Como uma exceção no linux, se alguém estiver executando o zsh com o módulo zsh / stat opcional, será necessário especificar um caminho para obter os coreutils do GNU:
fonte
Com o GNU
find
(antecede o GNU hástat
décadas):Relativamente portável:
fonte
É possível em uma linha, porque você pode colocar vários comandos em uma linha, por exemplo, conectados por tubos ou substituições de comandos:
(Obrigado @frostschutz pela atualização).
fonte
ZSize: 5
por exemplostat -c %s FILE
imprimir tamanho diretamente, em vez desed
?Único arquivo:
Arquivos múltiplos:
Este também funciona para um único arquivo. Não é completamente à prova de balas, veja o comentário de Stephane .
Estes são comandos compatíveis com o padrão POSIX.
fonte
a b
arquivo comoa b
(seqüências de espaços em branco convertidos em um único espaço, espaços em branco removidos).NR == 1