
ls -l
adiciona uma linha total (para o número total de blocos) no topo de sua saída. Existe uma maneira direta de suprimir esta linha da saída? Eu sei que posso canalizar a saída para outro comando para excluir a primeira linha, mas estou me perguntando se estou faltando uma opção simples para suprimir essa linha em primeiro lugar.
Responder1
Não, não está faltando uma opção simples para eliminar a total
linha, pelo menos não ao listar o conteúdo de um diretório (incluindo o atual, sem argumentos). Por exemplo, com GNU ls
, as -l
opções -g
, -n
, -o
e -s
fazem com que a total
linhapara ser exibido, sem opção para desativá-lo:
if (format == long_format || print_block_size)
{
const char *p;
char buf[LONGEST_HUMAN_READABLE + 1];
DIRED_INDENT ();
p = _("total");
DIRED_FPUTS (p, stdout, strlen (p));
DIRED_PUTCHAR (' ');
p = human_readable (total_blocks, buf, human_output_opts,
ST_NBLOCKSIZE, output_block_size);
DIRED_FPUTS (p, stdout, strlen (p));
DIRED_PUTCHAR ('\n');
}
Isso é na verdadeexigido pelo POSIX.
Entretanto, se você especificar os arquivos a serem listados, em vez de um diretório, ls
o total não será exibido; a -d
opção faz com que os diretórios sejam tratados como arquivos, produzindo o resultado desejado, conforme mencionado porCostas:
ls -ld *
produzirá a mesma saída que
ls -l
menos a total
linha, desde que seu shell não inclua arquivos ocultos ao expandir *
( dotglob
) e desde que o diretório atual não contenha tantos arquivos que a expansão *
exceda o comprimento máximo da linha de comando.
Você também pode especificar um diretório ( ls -ld /path/to/directory/*
), mas a saída listará os arquivos com o caminho fornecido, ao contrário de ls -l /path/to/directory
.