Comandos útiles en Linux para administrar directorios y obtener información del espacio en disco
En Linux, existen varios comandos útiles para administrar directorios y obtener información del espacio en disco. En este artículo, exploraremos tres comandos: du, ls y df.
Comando du
El comando du (disk usage) se utiliza para estimar y mostrar el uso del espacio en disco de archivos y directorios. Aquí hay algunos ejemplos de su uso:
du -sh directorio: Muestra el tamaño total del directorio especificado en un formato legible para humanos.du -shc directorio/*: Lista los directorios dentro del directorio especificado y muestra el tamaño total de cada uno, junto con un resumen final del tamaño total de todos los directorios listados.
Estos comandos son útiles cuando necesitas conocer el tamaño de los directorios para identificar qué áreas están ocupando más espacio en disco.
Comando ls
El comando ls se utiliza para listar archivos y directorios en un directorio dado. A continuación, se presentan algunos ejemplos de uso:
ls -l: Lista los archivos y directorios en formato detallado, mostrando permisos, propietario, tamaño, fecha, etc.ls -lh: Lista los archivos y directorios en formato detallado, mostrando el tamaño en unidades legibles para humanos.ls -lt: Lista los archivos y directorios ordenados por fecha de modificación, mostrando los más recientes primero.ls -d */: Lista solo los directorios en el directorio actual.
Estos comandos te permiten explorar y obtener información sobre los archivos y directorios en un directorio específico.
Comando df
El comando df (disk free) se utiliza para obtener información sobre el uso del espacio en disco en el sistema. Algunos ejemplos de su uso son:
df -h: Muestra el uso del espacio en disco de los sistemas de archivos en unidades legibles para humanos.df -i: Muestra el uso de inodos (estructuras de datos que almacenan información sobre archivos y directorios) en lugar del uso del espacio en disco.
Estos comandos son útiles para obtener una visión general del espacio en disco disponible en el sistema
Bonus Comando find
Cómo revisar los directorios y mostrar si hay más de 1 archivo por directorio
El comando que utilizaremos es el siguiente:
find <directorio_raíz> -type d -exec sh -c 'files=$(find "$0" -maxdepth 1 -type f | wc -l); [ $files -gt 1 ] && echo "En el directorio $0 hay más de 1 archivo"' {} \;
Explicación del Comando:
-
find:: Busca en el directorio raíz especificado y en todos sus subdirectorios. -
type d: Busca solo directorios y no archivos regulares. -
exec: Ejecuta un comando en cada directorio encontrado. -
sh -c '...' {} \;: Ejecuta un comando shell en cada directorio que se encuentra. ‘…’ representa el comando que se ejecutará. {} se utiliza como marcador de posición para el directorio actual. \; indica el final del comando -exec. -
files=$(find "$0" -maxdepth 1 -type f | wc -l): Dentro del comando shell, se utiliza find nuevamente para buscar archivos regulares (-type f) en el directorio actual ($0). -maxdepth 1 asegura que solo se busquen archivos en el directorio actual y no en sus subdirectorios. wc -l cuenta el número de líneas en la salida, que corresponde al número de archivos encontrados, y se guarda en la variable files. -
[ $files -gt 1 ]: Verifica si el valor almacenado en la variable files es mayor que 1. -
&&: Operador lógico “y” condicional. Si la condición anterior es verdadera (hay más de 1 archivo), se ejecuta el siguiente comando. -
echo "En el directorio $0 hay más de 1 archivo": Si hay más de 1 archivo en el directorio actual, muestra un mensaje indicando que hay más de 1 archivo en ese directorio. $0 es reemplazado por el nombre del directorio actual. -
Otro comando interesante para listar los archivos cuyos nombres comienzan con “f” en todos los subdirectorios.
find -type f -printf "%p\n" | grep -E "/f[^/]*$"
En este caso, estamos buscando archivos regulares (-type f). La opción -printf "%p\n" se utiliza para mostrar la ruta completa de cada archivo encontrado, seguido de un salto de línea.
Luego, el resultado de find se pasa al comando grep. El patrón /f[^/]*$ se utiliza con grep -E (modo de expresiones regulares extendidas) para filtrar los resultados. Este patrón busca rutas de archivos que comiencen con “/f” y no contengan ninguna barra (“/”) adicional en su nombre.
En resumen, este comando listará todos los archivos cuyos nombres comienzan con “f” en todos los subdirectorios del directorio actual.
Recuerda que puedes ajustar la ruta inicial según tus necesidades. Si deseas que la búsqueda sea insensible a mayúsculas y minúsculas, puedes agregar la opción -i a grep.
- Comando para listar todos los archivos de los subdirectorios pero omitiendo la ruta:
find /ruta/al/directorio -type f -exec basename {} \;
- Comando para buscar un archivo por su nombre en todo el sistema operativo:
sudo find / -name "nombre_del_archivo" 2>/dev/null
Conclusión
Los comandos du, ls y df son herramientas poderosas en Linux para administrar directorios y obtener información sobre el espacio en disco. Ya sea que necesites conocer el tamaño de los directorios, explorar archivos y directorios o verificar el uso del espacio en disco, estos comandos te brindan las herramientas necesarias.
¡Espero que esta guía te haya sido útil! Si tienes alguna pregunta o comentario, ¡no dudes en dejarlos abajo!