Sim, existem casos assim.
No caso de links simbólicos no sistema Linux com GNU ls, ele ls -lexibirá o tamanho do link, enquanto wc -cresolverá o arquivo real e lerá o número de bytes lá. Abaixo, você pode ver que ls -lreporta 29 bytes, enquanto wcreporta 172 bytes no arquivo real.
$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 29 1月 17 2016 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
$ wc -c /etc/resolv.conf
172 /etc/resolv.conf
$ wc -c /var/run/resolvconf/resolv.conf
172 /var/run/resolvconf/resolv.conf
$ ls -l /var/run/resolvconf/resolv.conf
-rw-r--r-- 1 root root 172 1月 15 15:49 /var/run/resolvconf/resolv.conf
No caso de sistemas de arquivos virtuais , como/proc ou /sys, muitos arquivos serão mostrados com tamanho 0 ls -l. No /devsistema de arquivos, temos uma variedade de arquivos especiais, como dispositivos de caracteres e dispositivos de bloco - wc -ctrava neles e ls -lmostra números maiores e menores em vez de tamanho.
Os pipes nomeados serão relatados como 0bytes por ls -c, mas wc -crealmente lerão o conteúdo do pipe, portanto, tecnicamente, ele informará quantos dados há no pipe nomeado:
$ mkfifo named.pipe
$ echo "This is a test" > named.pipe &
[1] 2129
$ ls -l named.pipe
prw-rw-r-- 1 xieerqi xieerqi 0 1月 16 08:40 named.pipe|
$ wc -c named.pipe
15 named.pipe
[1] + Done echo "This is a test" >named.pipe
Para arquivos regulares, o tamanho deve ser igual.
O ponto de ls -le wc -c, e como eles funcionam também difere. wc -cabre realmente o arquivo para leitura (você pode ver isso se executar, strace wc -c /etc/passwdpor exemplo). ls -lsó realiza stat()chamadas naqueles. Isso também explica o motivo pelo qual /proc ls -lmostra o tamanho 0 - você não pode declarar esses arquivos porque eles não são "reais" ou realmente armazenados no disco rígido / ssd. wc -cem vez disso, lê o conteúdo desse arquivo e calcula seu tamanho.
Por fim, ls -lé apenas uma ferramenta para listar itens interativamente. Raramente é um bom ajuste para scripts. Quando você realmente precisar ler os dados, use wc -c.
Observe que, para criar scripts e avaliar o tamanho de um arquivo, lsnão é o melhor candidato. De fato, é uma das práticas comuns evitar a análise de lssaída . Por favor, use du -b para descobrir o tamanho de um arquivo.