Salut à tous !
j'ai quelques scripts bash à écrire pour la fac et je galère un peu...
Le script que je développe doit donner la taille du plus petit et du plus grand fichier d'un répertoire.
La ou est mon problème c'est qu'il doit renvoyer les chemins de fichier complets et pas seulement les noms.
Donc mon idée est de récupérer le bazar avec ls de récupérer les plus petites et plus grandes tailles... Ca je devrais pouvoir le faire seul mais je ne trouve aucun moyen de récupérer les noms complets...
Merci beaucoup pour le coup de pouce éventuel :) !
# Use the force
Posté par rarcel . Évalué à 2.
[^] # Re: Use the force
Posté par David FRANCOIS (site web personnel) . Évalué à 2.
je vais creuser dans cette direction ! :)
# ls ... entre autre :)
Posté par Frédéric Heulin . Évalué à 1.
1 : sur une colonne
a : tous
r : inversé le cas échéant
t : tri temporel
d : on ne veut pas lister les répertoires [1]
l : si on veut la date [2]
`pwd` : on liste les fichiers du rep courant avec leur chemin complet
[1] Si on veut obtenir le même résultat avec le listage des fichiers des sous-répertoires, il faudra surement passer par un "find -exec ls -lartd " ou une autre astuce du genre.
[2] pipé sur un petit sed ou awk si on veut juste la date et le nom complet du fichier.
[^] # Re: ls ... entre autre :)
Posté par Pascal Terjan (site web personnel) . Évalué à 4.
Le plus gros :
[pterjan@plop admin]$ ls -FSd `pwd`/* | sed -e '/\/$/d' -e 's/*$//' | head -n 1
/home/pterjan/work/dassault/mksysb/code/admin/initrd
Le plus petit :
[pterjan@plop admin]$ ls -FSd `pwd`/* | sed -e '/\/$/d' -e 's/*$//' | tail -n 1
/home/pterjan/work/dassault/mksysb/code/admin/TODO
Le -F du ls et le sed servent à virer les répertoires
[^] # Re: ls ... entre autre :)
Posté par David FRANCOIS (site web personnel) . Évalué à 1.
Si je comprends bien tu scannes tous les fichiers du répertoire courant tu les tries avec sed et tu prends au choix la première ou la dernière ligne du résultat. (je comprends pas trop la syntaxe du sed, je vais fouiller le man un coup...)
Donc si je comprends toujours bien le -F dans le ls permet d'enlever les répertoires et d'examiner seulement le contenu du répertoire courant...
Donc si j'enlève le -F du ls mais pas du sed il devrait me faire le même boulot mais de manière récursive ?
Réponds oui et mon script est quasiment terminé x)
[^] # Re: ls ... entre autre :)
Posté par David FRANCOIS (site web personnel) . Évalué à 1.
[^] # Re: ls ... entre autre :)
Posté par skeespin (site web personnel) . Évalué à 1.
du -m * | sort ( la mise en forme reste a faire )
t'as commande fait bien un tri temporel ? ...alors qu'il est demandé un tri sur la taille
[^] # Re: ls ... entre autre :)
Posté par David FRANCOIS (site web personnel) . Évalué à 1.
Je n'en attendais pas autant !
Dire que je pensais que linuxfr se vidait...
Je pense que dans le cadre de mon script le du suffira, parce qu'il me donne exactement ce qu'il me faut sauf que je regarde dans les pages man et info et je trouve aucun moyen de virer optionnellement les répertoires.
Si je comprends bien avec l'option depth à zéro il me renverra quand même les répertoires mais avec leur taille totale ce qui m'embête pas mal...
Bon en attendant de voir si quelqu'un a une idée je vais fouiller les idées que vous venez de me donner.
Merci mille fois! :)
[^] # Re: ls ... entre autre :)
Posté par David FRANCOIS (site web personnel) . Évalué à 1.
En tout cas merci pour votre aide !
# re : Comment faire ?
Posté par fdods . Évalué à 1.
sous LINUX : ls -l | sort -gbk 5
bon bien sur cela te donne les valeurs en octets
# récursivement
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
# Mon script, tadaaa
Posté par David FRANCOIS (site web personnel) . Évalué à 1.
[^] # Re: Mon script, tadaaa
Posté par David FRANCOIS (site web personnel) . Évalué à 1.
Encore merci pour votre aide.
Les commentaires sont les bienvenus :)
[^] # Re: Mon script, tadaaa
Posté par skeespin (site web personnel) . Évalué à 1.
# zsh
Posté par z a . Évalué à 1.
echo "$PWD/"**/*(oL[1])
pour le plus petit fichierecho "$PWD/"**/*(OL[1])
pour le plus grosSuivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.