Encuentra el tamaño del código desprotegido en el directorio actual

2 minutos de lectura

Quiero encontrar el tamaño de los archivos desprotegidos actuales en una carpeta/proyecto, pero ignoro el directorio git.

Algo como:

du . --ignore '.git'

¿Hay alguna manera de encontrar el tamaño de todos los archivos ignorando lo que hay en la carpeta .git? Cuando hago esto:

du . --exclude=".git"   
du . --exclude="./.git"  # or this

De cualquier manera, obtengo:

du: --exclude=./.git: No such file or directory

¿Qué debo hacer?

  • Estoy en una Mac, y aparentemente el --exclude la opcion no existe

    usuario11810894

    1 ago 2019 a las 22:40

Por alguna razón (probablemente el historial BSD de las utilidades de Mac), la versión macOS de du no incluye --exclude. Sin embargo, al menos a partir de 10.14.x, incluye el nombre mucho menos obvio -I opción que ignora los elementos que están en la “máscara” que se proporciona; en este caso, “máscara” es solo otro nombre para alguna forma de expresión regular que al menos toma simple * y ? comodines.

Correr

 du -I .git .

da la jerarquía de tamaño, y

 du -s -I .git .

da el resumen. En ambos casos, el .git Se ignora el directorio.

Si tu du no tiene --exclude opción, tiene dos maneras fáciles de lidiar con esto. Este primero asume que no hay enlaces duros entre archivos en .git y archivos en otras partes del árbol, pero eso suele ser cierto:

  • correr du para obtener el uso total
  • correr du en .git mismo para obtener el .git uso
  • restar el segundo número del primer número

La segunda manera fácil es instalar una versión de du eso tiene --exclude.

Hay una tercera forma de manejar esto, que también es bastante fácil pero un poco complicada: simplemente mueva .git fuera del camino:

mv .git ../save-git
du ...
mv ../save-git .git

Si usa este método, asegúrese de que nada esté tratando de hacer algo similar a Git en el medio. o hacer .git un enlace simbólico a ../save-git, o (si su Git es lo suficientemente nuevo) un archivo de texto sin formato que contiene una redirección. Ambos métodos pueden interferir con el total, pero solo por un bloque de disco de espacio (el enlace simbólico o el texto sin formato directo toma un bloque de disco, a menos que el sistema operativo / sistema de archivos use enlaces simbólicos in-inode y el enlace simbólico es lo suficientemente corto como para caber en el inodo).

¿Ha sido útil esta solución?