Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 03/09/2009, à 09:53

krzyzstof

[Résolu] Terminal : qui est le plus gros ?

Bonjour,

Une ch'tite question aux pro de la ligne de commande (enfin deux questions wink) :
1- Comment faire apparaître dans le terminal le fichier le plus volumineux d'un dossier (pouvant contenir des sous-dossiers par ailleurs) ?
2- Comment lister tous les fichiers et sous-dossiers d'un dossier en les classant par ordre de volume (du plus "lourd" au plus "léger") ?
Dans ce dernier cas ma base de départ est sûrement :

$ du -ah

mais je ne sais pas quel(s) paramètres rajouter pour le classement par ordre décroissant ?

Par avance merci

Dernière modification par krzyzstof (Le 04/09/2009, à 20:07)


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

#2 Le 03/09/2009, à 09:55

Hawkmoon

Re : [Résolu] Terminal : qui est le plus gros ?

du -sk * |sort -n

Tagazok à toi, mon frère !

Hors ligne

#3 Le 03/09/2009, à 09:57

gren

Re : [Résolu] Terminal : qui est le plus gros ?

Pour tout les fichiers, sous dossier du plus gros au plus petit :

du -a | sort -rn

Pour la seconde question c'est un peu plus compliqué, mais c'est faisable avec un script, je m'y tente.

Dernière modification par gren (Le 03/09/2009, à 10:00)

Hors ligne

#4 Le 03/09/2009, à 10:07

gren

Re : [Résolu] Terminal : qui est le plus gros ?

Pour la deuxième question:

Tu crée un fichier script list_dir_size.sh avec :

#!/bin/bash

#pour indiquer que mon séparateur est le retour à la ligne
IFS='
'

#boucle parcourant tous les dossiers et affichant la taille et le nom pour chacun
for i in $(find -type d)
do
    du -s "$i"
done

#au cas ou
unset IFS
chmod +x list_dir_size.sh
./list_dir_size.sh | sort -rn | less

[edit: simplifications+explications]

Dernière modification par gren (Le 03/09/2009, à 10:32)

Hors ligne

#5 Le 03/09/2009, à 12:15

krzyzstof

Re : [Résolu] Terminal : qui est le plus gros ?

@ Hawkmoon : merci, mais ce n'est pas exactement ma demande. N'apparaissent que les dossiers (et pas les fichiers - même cachés) et dans l'ordre croissant et non décroissant. La première commande de Gren est celle que je recherchais : du -a | sort -rn wink

@ Gren : J'ai tout remis dans l'ordre : ta réponse à ma première question est en fin de compte la réponse à ma 2ème et la 2ème à ma 1ère lol
J'ai deux questions subsidiaires :
Lorsque tu affiches le résultat de "du -ah | sort -rn", y a-t-il un moyen d'afficher page par page le résultat car cela défile trop vite et j'ai beaucoup de fichiers ?
Pour ton script pour ma 1ère question, je l'ai mis en pratique, mais si je ne dis pas de bêtises il m'affiche un dossier et non un fichier. En outre le dossier qu'il m'affiche ne me semble pas le plus lourd de mon répertoire. Sûr de toi ou suis-je passé à côté de kèke chose ? Merci pour ton aide aussi. smile


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

#6 Le 03/09/2009, à 12:56

Hawkmoon

Re : [Résolu] Terminal : qui est le plus gros ?

ajoute

|more

Tagazok à toi, mon frère !

Hors ligne

#7 Le 03/09/2009, à 13:08

xabilon

Re : [Résolu] Terminal : qui est le plus gros ?

Déplacé dans "Console"


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#8 Le 03/09/2009, à 13:21

krzyzstof

Re : [Résolu] Terminal : qui est le plus gros ?

@ xabilon : désolé j'avais pas vu qu'il y avait un forum spécial yikes. Merci
@ Hawkmoon : Merci cela marche nickel le :

du -ah | sort -rn |more

big_smile


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

#9 Le 03/09/2009, à 13:58

Totor

Re : [Résolu] Terminal : qui est le plus gros ?

gren a écrit :

Pour la deuxième question:

Tu crée un fichier script list_dir_size.sh avec :

#!/bin/bash

#pour indiquer que mon séparateur est le retour à la ligne
IFS='
'

#boucle parcourant tous les dossiers et affichant la taille et le nom pour chacun
for i in $(find -type d)
do
    du -s "$i"
done

#au cas ou
unset IFS

Erreur, cela donne le dossier le plus gros mais pas le fichier le plus gros.
Voilà une solution :

find -type f -printf "%k %P\n"|sort -nr|head -1|cut -d' ' -f 2-

Note :

krzyzstof a écrit :

@ Hawkmoon : Merci cela marche nickel le :

du -ah | sort -rn |more

ça m'étonnerai ...
l'option -h donne les résultats au format "humain".
Donc, tu peux très bien avoir :
4k fichier2
1,1G fichier1

ce qui est totalement erroné par rapport à ta demande...


-- Lucid Lynx --

Hors ligne

#10 Le 03/09/2009, à 14:26

gren

Re : [Résolu] Terminal : qui est le plus gros ?

Totor a écrit :
gren a écrit :
#!/bin/bash

#pour indiquer que mon séparateur est le retour à la ligne
IFS='
'

#boucle parcourant tous les dossiers et affichant la taille et le nom pour chacun
for i in $(find -type d)
do
    du -s "$i"
done

#au cas ou
unset IFS

Erreur, cela donne le dossier le plus gros mais pas le fichier le plus gros.
Voilà une solution :

find -type f -printf "%k %P\n"|sort -nr|head -1|cut -d' ' -f 2-

Erreur ? Je crois pas non.
C'est justement ce qu'il veut : trier par taille de dossier.


Autrement oui |more fonctionne ou alors |less

Dernière modification par gren (Le 03/09/2009, à 14:26)

Hors ligne

#11 Le 03/09/2009, à 14:35

Totor

Re : [Résolu] Terminal : qui est le plus gros ?

gren a écrit :

C'est justement ce qu'il veut : trier par taille de dossier.

On ne doit pas comprendre de la même façon :

krzyzstof a écrit :

[...]
Comment faire apparaître dans le terminal le fichier le plus volumineux d'un dossier (pouvant contenir des sous-dossiers par ailleurs) ?[...]


-- Lucid Lynx --

Hors ligne

#12 Le 03/09/2009, à 15:19

krzyzstof

Re : [Résolu] Terminal : qui est le plus gros ?

[...] Comment faire apparaître dans le terminal le fichier le plus volumineux d'un dossier (pouvant contenir des sous-dossiers par ailleurs) ?[...]

big_smile oui ce que j'aimerai connaître c'est le fichier le plus volumineux contenu dans un dossier pouvant lui même contenir des dossiers...et donc le fichier recherché peut se trouver dans l'un de ces sous-dossiers. Suis-je plus clair wink ?

Concernant le code

du -ah | sort -rn |more

effectivement ! Mais l'erreur vient de moi et non de Hawkmoon ou de Gren. Connaissant le paramètre "h", j'ai voulu l'employer pour que cela plus facilement lisible, mais ne comprenant pas tout le reste de la ligne de code, je n'avais pas compris que cela pouvait avoir une incidence yikes

Je viens d'essayer ta ligne pour le fichier le plus volumineux. Même si cela ne me donne pas sa valeur (poids), cela me trouve bien le fichier avec son arborescence.
Bref merci à toi et à Hawkmoon et Gren pour votre aide big_smile

Sympa le Terminal mais pfff au début c'est qd même pas évident roll


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

#13 Le 03/09/2009, à 15:20

Totor

Re : [Résolu] Terminal : qui est le plus gros ?

pour le "poids" (exprimé en ko) :

find -type f -printf "%k %P\n"|sort -nr|head -1

-- Lucid Lynx --

Hors ligne

#14 Le 03/09/2009, à 15:24

krzyzstof

Re : [Résolu] Terminal : qui est le plus gros ?

Heu...juste une dernière question (promis j'arrête après tongue)
En utilisant :

find -type f -printf "%k %P\n"|sort -nr|head -1|cut -d' ' -f 2-

ou

find -type f -printf "%k %P\n"|sort -nr|head -1

est-il possible de rajouter une commande pour exclure un sous-dossiers spécifique de la recherche...je sais, je sais...:lol:

Dernière modification par krzyzstof (Le 03/09/2009, à 15:27)


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

#15 Le 03/09/2009, à 15:46

Totor

Re : [Résolu] Terminal : qui est le plus gros ?

oui, je te laisse regarder les options -wholename et -prune de la commande find.


-- Lucid Lynx --

Hors ligne

#16 Le 03/09/2009, à 17:26

gren

Re : [Résolu] Terminal : qui est le plus gros ?

oui ce que j'aimerai connaître c'est le fichier le plus volumineux contenu dans un dossier pouvant lui même contenir des dossiers...

Ok je crois avoir inversé les deux questions, la prochaine fois penses à faire un topic par question comme il se doit sur ce forum. Merci

Je viens d'essayer ta ligne pour le fichier le plus volumineux. Même si cela ne me donne pas sa valeur (poids), cela me trouve bien le fichier avec son arborescence.

Au pire si ca te donne juste le nom de fichier tu peux toujours utiliser mon script et changer les options du find (la ou j'ai mis find -type d)

D'ailleurs ya surement moyen de passer par xargs pour simplifier mon script en une ligne de commande.

Bref merci à toi et à Hawkmoon et Gren pour votre aide

Pas de problème.

Dernière modification par gren (Le 03/09/2009, à 17:29)

Hors ligne

#17 Le 03/09/2009, à 18:20

krzyzstof

Re : [Résolu] Terminal : qui est le plus gros ?

J'ai regardé dans les forums l'utilisation de -prune. Mais je ne suis pas arrivé à insérer cette fonction dans la ligne de commande précédente et ce malgré de nombreux essais. Tant pis.
Merci quand même.

Dernière modification par krzyzstof (Le 03/09/2009, à 18:21)


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

#18 Le 03/09/2009, à 19:15

Totor

Re : [Résolu] Terminal : qui est le plus gros ?

find -L \( -wholename "*<Nom du dossier>*" -prune -o -type f \) -printf "%k %P\n"|sort -nr|head -1

Note : j'ai ajouté l'option -L car j'avais des dossiers de type "liens symboliques"
tu peux l'enlever si tu veux


-- Lucid Lynx --

Hors ligne

#19 Le 03/09/2009, à 21:25

krzyzstof

Re : [Résolu] Terminal : qui est le plus gros ?

J'ai essayé en tapant :

christophe@totoshika-ubuntu:~$ find -L \( -wholename "*.gvfs*" -prune -o -type f \) -printf "%k %P\n"|sort -nr|head -1

(je veux scanner mon home sauf le dossier ".gvfs/")
et là le terminal s'emballe et me met des tonnes de lignes en continu qui me semblent être tjs les mêmes (il faut que je stoppe le terminal avec CTR+C) :

find: Boucle détectée dans le système de fichiers ; ""./.wine/dosdevices/z:/sys/devices/platform/dock.0/subsystem/devices/pcspkr/input/input5/subsystem/input0/device/subsystem/devices/LNXSYSTM:00/device:00/PNP0A03:00/device:01/physical_node/subsystem/devices/0000:00:01.0/pci_bus/0000:01/subsystem/0000:00/device/0000:00:12.0/host0/subsystem/devices/host2/scsi_host/host2/subsystem/host4/device/target4:0:0/4:0:0:0/block/sr0/subsystem/loop5/bdi/subsystem/1:5/subsystem"" est dans la même boucle que "./.wine/dosdevices/z:/sys/devices/platform/dock.0/subsystem/devices/pcspkr/input/input5/subsystem/input0/device/subsystem/devices/LNXSYSTM:00/device:00/PNP0A03:00/device:01/physical_node/subsystem/devices/0000:00:01.0/pci_bus/0000:01/subsystem/0000:00/device/0000:00:12.0/host0/subsystem/devices/host2/scsi_host/host2/subsystem/host4/device/target4:0:0/4:0:0:0/block/sr0/subsystem/loop5/bdi/subsystem".
...
???


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

#20 Le 04/09/2009, à 07:49

gren

Re : [Résolu] Terminal : qui est le plus gros ?

Enlèves l'option -L qui suit les liens symboliques et ca devrait aller.

Hors ligne

#21 Le 04/09/2009, à 20:03

krzyzstof

Re : [Résolu] Terminal : qui est le plus gros ?

Nickel !!! Marche impec ! cool
Un grand merci à tous les deux big_smile

Dernière modification par krzyzstof (Le 04/09/2009, à 20:08)


Krzyzstof
Netbook : Samsung N220 - Linux Mint Petra Mate (32 bits)
Portable : Dell Latitude E5530 - Windows 7 pro (64 bits)
Fixe : Custom (carte mère Asus A7V333 + carte graphique ATI Radeon 9600 XT) - Linux Mint Petra XCFE (32 bits)

Hors ligne

Haut de page ↑