Esto es probablemente algo básico pero no puedo hacer que funcione. Estoy tratando de usar DU para obtener un tamaño total de archivos menos ciertos directorios. Necesito excluir un directorio específico llamado uploads
pero no todos los directorios llamados uploads
. Por ejemplo, mi estructura de archivos se parece un poco a esto:
/store
/uploads
/junk_to_ignore
/more_junk_to_ignore
/user_one
/uploads
/user_two
Puedo ejecutar el siguiente comando:
du -ch --exclude=uploads*
y me da el tamaño del archivo menos todos los directorios "subidos". Sin embargo, al intentar excluir ciertos directorios (y todos sus subdirectorios) fallo. He intentado variaciones de:
du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'
pero parece que no puedo entenderlo. ¿Cómo excluyo un directorio específico?
command-line
disk-usage
Será
fuente
fuente
username: store$ du -ch --exclude=./uploads
funcionó (con y sin comodín) para mí, desde el directorio de la tienda. ¿Está ejecutando ese comando exactamente y desde la carpeta de la tienda? Y tiene que ser la ruta relativa (que encuentra ve / imprime), no absoluta.Respuestas:
Casi lo has encontrado :)
Tenga en cuenta que no hay asterisco al final. El asterisco significa que se deben omitir todos los subdirectorios en "cargar" , pero no los archivos directamente en ese directorio.
fuente
du -sb --exclude=./relative/path/to/uploads
) no funciona para mí. Esto hace:du -sb --exclude relative/path/to/uploads
du
. El mío (OSX) ni siquiera tiene--exclude
, sino que-I mask
debe "Ignorar archivos y directorios que coincidan con la máscara especificada". En su ejemplo de trabajo, también omite el=
, lo que me hace pensar que es solo su versión dedu
ser ligeramente diferentedu
.Para excluir varios directorios, simplemente pase el indicador --exclude nuevamente.
fuente
du -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
impresionante para omitir los sistemas de archivos virtuales como tal
fuente
Si tiene que estar en macOS, instale GNU Coreutils con el siguiente comando.
La mayoría de los comandos instalados por Coreutils tienen el prefijo
g
, ya que tienen un nombre BSD preinstalado en macOS. Entonces puedes hacer lo siguiente.fuente