Je travaille sur un cluster partagé avec d'autres collègues. Le disque dur est limité (et a été plein à certaines occasions), donc je nettoie ma partie de temps en temps. Je veux le faire rapidement, donc jusqu'à présent je fais cela en faisant une liste de fichiers de plus de 100 Mo de plus de 3 mois, et je vois si j'en ai toujours besoin.
Mais maintenant, je pense qu'il pourrait y avoir un dossier avec> 1000 fichiers plus petits qui me manquent, donc je veux avoir un moyen facile de voir si c'est le cas. De la façon dont je génère des données, il serait utile d'obtenir une liste de la taille totale par extension. Dans le contexte de cette question, «extension» comme tout ce qui se trouve derrière le dernier point du nom de fichier.
Supposons que j'ai plusieurs dossiers avec plusieurs fichiers:
folder1/file1.bmp 40 kiB
folder1/file2.jpg 20 kiB
folder2/file3.bmp 30 kiB
folder2/file4.jpg 8 kiB
Est-il possible de faire une liste de la taille totale des fichiers par extension de fichier, comme ceci:
bmp 70 kiB
jpg 28 kiB
Je ne me soucie pas des fichiers sans extension, ils peuvent donc être ignorés ou mis dans une catégorie.
J'ai déjà parcouru les pages de manuel de ls
, du
et find
, mais je ne sais pas quel est le bon outil pour ce travail ...
la source
Réponses:
Sur un système GNU:
Ou la même chose avec
perl
, en évitant l'-printf
extension de GNUfind
(toujours en utilisant une extension GNU-print0
, mais celle-ci est plus largement prise en charge de nos jours):Il donne une sortie comme:
Si vous voulez
KiB
,MiB
... suffixes, dirigez-vous versnumfmt --to=iec-i --suffix=B
.%b*512
donne l'utilisation du disque, mais notez que si les fichiers sont liés plusieurs fois en dur, ils seront comptés plusieurs fois afin que vous puissiez voir une différence avec lesdu
rapports.la source
-printf
est spécifique à GNUfind
, c'est pourquoi j'ai dit sur un système GNU .perl
alternative qui devrait fonctionner même sur macOS.Voici une autre solution:
La partie qui obtient les extensions est:
Recherchez ensuite les fichiers avec une extension et imprimez-les également à l'écran:
Ensuite, nous voulons conserver l'extension et le total:
et gardez-le sur la même ligne:
la source
Pas aussi agréable que la solution de Stéphane, mais vous pouvez essayer
où vous devez l'exécuter pour chaque type de fichiers.
la source
du
invocation soit exécutée. Avec GNUxargs
, vous voudriez ajouter l'-r
indicateur afin que du ne soit pas exécuté quand il n'y a pas de fichier (sinon, vous vous retrouveriez avec l'utilisation du disque du répertoire actuel). Vous souhaiterez peut-être ajouter un-type f
ou! type d
pour éviter de compter les fichiers qui se trouvent dans des répertoires dont le nom se termine par.png
.