Linux wc: cómo contar líneas, palabras y caracteres
Los datos están comprobados en octubre de 2026.
La respuesta rápida: qué método conviene en cada caso
Si solo necesitas medir un texto, usa wc con una opción: -l para líneas, -w para palabras, -m para caracteres o -c para bytes. Para comparar tamaño visible y almacenamiento, ejecuta wc -m -c; es la opción más útil cuando sospechas que hay acentos, emojis o codificaciones UTF-8.
Si vas a contar archivos de un directorio, find ... -print0 | wc -l es preferible a ls | wc -l: no interpreta nombres que empiezan por -, no divide el resultado al encontrar saltos de línea y permite filtrar por tipo o tamaño.
Para scripts, envía rutas por entrada estándar con --files0-from, usa --total para obtener totales y combina wc con grep cuando necesites validar el contenido. Ten en cuenta que wc no distingue palabras por idioma ni interpreta la sintaxis de un archivo de texto: solo separa elementos por espacios, según el comportamiento de GNU coreutils 9.11. No necesitas cuenta, cable ni instalación adicional en un sistema Linux con coreutils; basta un archivo legible o entrada estándar.
Qué necesitas antes de empezar
La guía utiliza GNU coreutils 9.11, concretamente la utilidad wc, incluida en el entorno de línea de comandos de Linux. Comprueba la implementación con wc --version; el número mostrado debe corresponder a GNU coreutils 9.11 o a la versión instalada en tu distribución.
Necesitas un archivo legible o datos disponibles por entrada estándar. Para un archivo, wc archivo.txt requiere permiso de lectura. Si lo omites, wc espera contenido por la entrada estándar y termina al pulsar Ctrl+D en una terminal. No requiere cuenta, conexión ni cable.
La codificación importa: -m cuenta caracteres y -c cuenta bytes. En texto UTF-8, un carácter puede ocupar entre 1 y 4 bytes, y una cadena ANSI de escape puede aportar caracteres que no ves en pantalla. Para obtener una cifra estable, fija la configuración regional con LC_ALL=C o LC_ALL=C.UTF-8, si lo que duro está disponible.
La salida normal incluye líneas, palabras, bytes y nombre del archivo. Con --files0-from, usa separadores NUL; con --total, se añade una línea de total. En scripts, comprueba siempre el código de salida de cada comando antes de confiar en el número. Datos comprobados en octubre de 2026.
Tabla comparativa de los métodos de recuento
| Método | Qué mide | Salida | Facilidad | Limitación principal |
|---|---|---|---|---|
wc -l |
Líneas terminadas en salto de línea | 1 campo | 1 opción | No cuenta una última línea sin salto final |
wc -w |
Palabras separadas por espacios | 1 campo | 1 opción | No distingue idioma ni puntuación |
wc -m |
Caracteres | 1 campo | 1 opción | Depende de la configuración regional |
wc -c |
Bytes | 1 campo | 1 opción | Un carácter UTF-8 puede ocupar varios bytes |
wc -l -w -m -c |
Varias unidades en orden fijo | 4 campos | Varias opciones | Cada cifra exige interpretar su unidad |
| `ls -1 \ | wc -l` | Elementos de la salida de ls |
1 campo | 1 tubería |
| `find … -print0 \ | wc -l` | Rutas generadas por find |
1 campo | 1 tubería |
| Método | Qué mide | Salida | Facilidad | Limitación principal |
|---|---|---|---|---|
wc --bytes |
Bytes leídos | 1 campo | 1 opción | No equivale a caracteres visibles |
wc --total |
Total acumulado de entradas | 1 campo adicional | Opción adicional | Requiere combinar con otras entradas |
wc --files0-from |
Archivos separados por NUL | Campos por archivo y total | Opción adicional | El archivo de rutas debe usar NUL |
Contar líneas, palabras, caracteres y bytes
- Ejecuta
wc -l archivo.txtpara contar líneas. En GNU coreutils 9.11, una línea termina en `
`; una última línea sin salto de línea no se cuenta como una línea adicional en el recuento de líneas.
- Ejecuta
wc -w archivo.txtpara contar palabras. La unidad es una secuencia separada por espacios; no es un análisis gramatical. - Ejecuta
wc -m archivo.txtpara contar caracteres. FijarLC_ALL=C.UTF-8oLC_ALL=Chace predecible la interpretación, según los datos disponibles. - Ejecuta
wc -c archivo.txtpara contar bytes, independientemente de la codificación de caracteres. - Ejecuta
wc -L archivo.txtpara obtener la longitud de la línea más larga, medida en caracteres según la configuración regional. Esta opción no cuenta todas las líneas.
El orden fijo de los resultados es líneas, palabras, caracteres y bytes. Por ejemplo, wc -l -w -m -c archivo.txt devuelve cuatro columnas: 12 83 402 598 archivo.txt es un ejemplo ilustrativo; sustitúyelo por tus datos reales. Si inviertes las opciones, el orden de las columnas no cambia.
Para saber si falta el salto final, compara wc -l con una herramienta que detecte el último byte. El valor de líneas puede no coincidir con el número de líneas lógicas si el archivo termina sin . Para automatizarlo, usa tail -c 1 archivo.txt | od -An -t x1; la salida debe mostrar 0a cuando el último byte es un salto de línea. Datos comprobados en octubre de 2026.
Contar elementos de un directorio
Un caso concreto: para contar las entradas de un directorio, ls -1 | wc -l es breve, pero no es fiable como inventario. ls -1 no muestra los archivos ocultos por defecto, y su salida puede incluir una cabecera de total, separadores o nombres con saltos de línea, según las opciones y el terminal.
Ejecuta ls -1A | wc -l para incluir archivos ocultos, como .bashrc, pero A también muestra entradas que empiezan por punto. Si el directorio contiene copias de seguridad como informe.txt.bak, ls las cuenta: el número de elementos incluye cualquier nombre visible, no solo archivos con una extensión concreta.
Para filtrar rutas con find, usa find . -maxdepth 1 -type f -print0 | wc -l. find no interpreta los nombres como opciones porque recibe las rutas desde su entrada estándar, y -print0 separa cada ruta con un byte NUL. Si buscas solo archivos regulares, añade -type f; si quieres directorios, cambia a -type d.
La diferencia práctica: ls -1 | wc -l sirve para una comprobación rápida de un directorio sin nombres problemáticos; find . -maxdepth 1 -type f -print0 | wc -l sirve para scripts y auditorías. Comprueba también si el directorio incluye enlaces, archivos especiales o puntos montados antes de presentar el resultado como un recuento de archivos. Datos comprobados en octubre de 2026.
Detectar caracteres invisibles y medir el tamaño
-m y -c responden a preguntas distintas. -m mide caracteres; -c mide bytes. En UTF-8, é ocupa 2 bytes y un emoji puede ocupar 4, según la secuencia concreta. Por tanto, wc -m puede ser menor que wc -c aunque el texto tenga menos caracteres visibles que bytes almacenados. La relación exacta depende de la codificación y del contenido.
Un archivo de texto puede incluir espacios, tabulaciones, saltos de línea o secuencias ANSI de control. wc -m cuenta esas secuencias como caracteres si la configuración regional las interpreta; wc -c cuenta siempre sus bytes. Para inspeccionar el final del archivo y distinguir un salto de línea, tail -c 1 | od -An -t x1 muestra el byte final en hexadecimal.
wc --bytes mide el contenido que lee, no el espacio reservado en el disco. du -hB1 muestra bloques asignados y puede ocupar más espacio del archivo. La diferencia aparece por el sistema de archivos y por el tamaño de bloque; no son dos medidas del mismo valor.
Usa -m para longitud editorial o longitud visible aproximada; usa -c para transferencia, límites de protocolo o ocupación binaria; usa du -hB1 para espacio realmente ocupado. No presentes el valor de du como una segunda medida del tamaño lógico. Datos comprobados en octubre de 2026.
Integrar wc en scripts y pipelines
- Usa
comando | wc -lpara contar la salida de otro programa.grep -c PATRION archivo.txtya devuelve un recuento de coincidencias y evita una tubería adicional. - Para procesar rutas sin Interpretar opciones ni saltos de línea, genera una lista NUL:
find . -type f -print0 | wc --files0-from=-. El argumento-indica que las rutas llegan por la entrada estándar. - Para acumular el total de varios archivos,
wc --total --files0-from=-añade una columnatotal. Comprueba que las rutas NUL terminen correctamente. - Para contar líneas que cumplen un patrón, usa
grep PATRION archivo.txt | wc -l.grep -ccuenta líneas coincidentes, mientrasgrep -opuede contar coincidencias, no líneas. - Preserva el código de salida del pipeline con
set -o pipefailen Bash. Así, un fallo degrepofindno queda oculto por el código de salida dewc; captura ambos estados si el script distingue errores de un total vacío.
En scripts, guarda el resultado en una variable solo después de comprobar que el comando previo terminó correctamente. Para obtener un total de palabras de varios archivos, wc -w --total --files0-from=- es más predecible que concatenar nombres en una ordenación. La documentación oficial de GNU coreutils describe las opciones y sus combinaciones. Datos comprobados en octubre de 2026.
Fallos frecuentes y límites del recuento
El primer error es tratar -w como un contador de palabras lingüísticas. GNU wc separa por espacios; una palabra pegada a un signo de puntuación cuenta como una palabra, y el tratamiento de tabulaciones y saltos depende de la definición de separadores de la implementación.
El segundo es comparar -m y -c sin fijar la configuración regional. En UTF-8, una letra acentuada puede ocupar 2 bytes y un emoji puede ocupar 4, pero la cifra exacta depende de los caracteres presentes. Usa LC_ALL=C.UTF-8 si está disponible; con LC_ALL=C, -m se interpreta según esa configuración.
El tercero es contar directorios con ls -1 | wc -l y creer que el resultado es el número de archivos. ls no muestra ocultos por defecto, puede incluir una cabecera de total y no es seguro con nombres complejos. Usa find ... -print0 | wc -l para rutas robustas.
El cuarto es olvidar --total: wc puede entregar una cifra por archivo sin una fila total. En scripts, usa set -o pipefail para no perder errores de etapas anteriores. Finalmente, wc de GNU no es idéntico en todas las variantes de Unix: revisa wc --version y la documentación local si obtienes resultados distintos a los descritos para GNU coreutils 9.11. Datos comprobados en octubre de 2026.
Para decisiones rápidas:
wc -lpara líneas,wc -wpara palabras,wc -mpara caracteres ywc -cpara bytes; usafind -print0cuando la exactitud del inventario importe más que la brevidad.
Preguntas frecuentes sobre wc
1. ¿Qué es el comando wc en Linux?
El comando wc cuenta líneas, palabras, bytes o caracteres de uno o varios archivos. Por ejemplo, «wc -l archivo.txt» muestra cuántas líneas contiene y «wc -w archivo.txt» cuántas palabras tiene. Si omites opciones, wc presenta líneas, palabras y bytes en ese orden.
2. ¿Cómo se consulta la ayuda del comando du en Linux?
Usa «man du» para abrir el manual del comando du, que informa del espacio ocupado por archivos y directorios. Dentro del manual, «du -h directorio» muestra el uso en unidades legibles como KiB, MiB y GiB, mientras que «du -sh directorio» resume el total en una sola línea.
3. ¿Cómo cuento líneas con wc en RHEL?
En RHEL, wc forma parte del paquete coreutils y funciona igual que en otras distribuciones de Linux. Ejecuta «wc -l archivo.txt» para mostrar el número de líneas y «wc -l *.txt» para contar las líneas de varios archivos. El total de los archivos aparece en la última línea.
4. ¿Cómo cuento las palabras de un archivo en Linux?
Ejecuta «wc -w archivo.txt» para obtener el número de palabras del archivo. Si necesitas el resultado junto con el nombre del archivo, puedes escribir «wc -w archivo.txt» directamente. Para contar palabras en varios archivos, usa «wc -w *.txt» y revisa el total de la última línea.
Fuentes
- Githubrobertdavidgraham/wc2: Investigates optimizing 'wc', the Unix word …consultado el 28/10/2026
- Wikipediawc (Unix) – Wikipediaconsultado el 28/10/2026
- Linuxizewc Cheatsheet – Linuxizeconsultado el 28/10/2026
- Nynjfwc26FIFA World Cup 2026™ NYNJ: Homeconsultado el 28/10/2026
- Ss64wc Man Page – Linux – SS64consultado el 28/10/2026
