Je prévois donc une sauvegarde, il y a des milliers de fichiers dans les sous-répertoires et je sais que les plus gros ne sont que des ensembles de données que je n'ai pas besoin de sauvegarder, par opposition à des éléments que j'ai créés.
J'ai trouvé cette commande utile ici qui répertorie tout ce qui est plus grand ou plus petit que une taille donnée:
Si je fais:
find . -type f -size +1000M
Il ne répertorie que 4 fichiers, mais pour + 100M, il y en a environ 30. Je peux regarder à travers et voir s'il y a quelque chose d'important qui doit rester et ajuster le seuil en conséquence.
Voudrait une taille totale pour que je sache si tout ira sur un disque optique de 25 ou 100 Mo ..
J'ai donc essayé de le diriger vers du
comme ceci mais cela ne semble pas fonctionner, c'est-à-dire donnez-moi un nombre total de, disons les 4 fichiers trouvés:
find . -type f -size +1000M | du
Est ce que quelqu'un sait comment accomplir cela?
(Oui, bien sûr changera le + en un -, moins qu'autrement supérieur qu'avant de regarder le nombre mais il est plus facile de voir si cela fonctionne en regardant 30 plutôt que des milliers de fichiers).
3 réponses
Vous pouvez exécuter find
avec -printf
, qui dispose de nombreuses options pour contrôler ce qu'il imprime (documenté ici). Ainsi, vous pouvez imprimer chaque fichier, suivi du nombre de blocs de disque de 1 kilo-octet qu'il utilise, avec:
find . -type f -size +1000M -printf '%p %k\n'
Une fois que vous avez fait cela, il est plus facile de les additionner avec awk
qu'avec du
:
find . -type f -size +1000M -printf '%p %k\n' | awk 'BEGIN{total=0}{total += $2}END{print total}'
C'est parce que du
n'accepte une liste d'entrée que si elle se termine par NUL
(ASCII 0). Il faudrait donc faire:
find . -type f -size +1000M -printf '%p\0' | du -k --files0-from=- --total
Puis regardez la dernière ligne "total". Mais la NUL
- liste de noms de fichiers terminée n'est pas conviviale à regarder; sans noms d'utilisateur, les noms de fichiers semblent fonctionner ensemble.
du --total $(find . -type f -size +1000M)
Va vous aider.
Afin de savoir si certains fichiers tiennent sur un autre support, vous devez prendre en compte la taille de bloc de l'autre support. Il ne suffit pas de résumer uniquement les octets de chaque fichier, car chaque fichier gaspille de l'espace disque dans le dernier bloc. La quantité d'espace gaspillé dépend de la taille du bloc.
Exemple de mon répertoire personnel sur ma machine virtuelle:
$ du -hs .
619M .
$ du -bhs .
598M .
Les fichiers ont une taille de 598 Mo, mais ils utilisent 619 Mo sur le disque. Environ 20 millions sont gaspillés.
De nouvelles questions
linux
LES QUESTIONS LINUX DOIVENT ÊTRE LIÉES À LA PROGRAMMATION. Utilisez cette balise uniquement si votre question concerne la programmation à l'aide d'API Linux ou un comportement spécifique à Linux, et pas uniquement parce que vous exécutez votre code sous Linux. Si vous avez besoin d'une prise en charge Linux, vous pouvez essayer https://unix.stackexchange.com ou le site Stack Exchange de la distribution Linux spécifique comme https://askubuntu.com ou https://elementaryos.stackexchange.com/