Sí, hay tales casos.
En el caso de los enlaces simbólicos en el sistema Linux con GNU ls, se ls -lmostrará el tamaño del enlace, mientras wc -cque resolverá el archivo real y leerá el número de bytes allí. A continuación puede ver que ls -linforma 29 bytes, mientras que wcinforma 172 bytes en el archivo 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
En el caso de sistemas de archivos virtuales , como/proc o /sys, muchos archivos aparecerán como de tamaño 0 ls -l. Bajo el /devsistema de archivos tenemos una variedad de archivos especiales, como dispositivos de caracteres y dispositivos de bloque: se wc -ccuelga de ellos y ls -lmuestra números mayores y menores en lugar de tamaño.
Las canalizaciones con nombre se informarán como 0bytes ls -c, pero en wc -crealidad leerán el contenido de la canalización, por lo que técnicamente le dirá cuántos datos hay en la canalización con nombre:
$ 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 archivos normales, el tamaño debe ser igual.
El punto de ls -ly wc -c, y cómo funcionan también difiere. wc -cen realidad abre un archivo para leer (puedes verlo si corres, strace wc -c /etc/passwdpor ejemplo). ls -lsolo realiza stat()llamadas en esos. Esto también explica por qué en los /proc ls -lshows de tamaño 0: no puede registrar esos archivos porque no son "reales" o están almacenados en el disco duro / ssd. wc -cen su lugar, lee el contenido de ese archivo y calcula su tamaño.
Finalmente, ls -les solo una herramienta para enumerar elementos de forma interactiva. Rara vez es una buena opción para las secuencias de comandos. Cuando realmente necesite leer los datos, use wc -cen su lugar.
Tenga en cuenta que, para crear secuencias de comandos y evaluar el tamaño de un archivo, lsno es el mejor candidato. De hecho, es una de las prácticas comunes para evitar el análisis de lssalida . Úselo du -b para averiguar el tamaño de un archivo.