#1 Le 23/05/2010, à 10:42
- Link_Octree
[bash] Obtenir seulement la taille d'un fichier (avec du)
Salut,
J'aimerai pouvoir (dans le cadre d'un script shell) obtenir la taille d'un fichier.
J'ai recherché, et fais quelques tests avec les commandes ls, dh, cat, et du, et il s'avère que c'est cette dernière qui me convient le mieux
du -m fichier.avi
350 fichier.avi
Moi ce qui m'intéresse c'est clairement le 350 dans ce cas (qui est la taille du fichier.avi)
J'ai regardé le man, et pas moyen de trouver une option qui puisse afficher SEULEMENT la taille du fichier :S
Je peux faire celà avec un argument que je n'ai pas vu, ou avec l'aide d'une autre commande :S ?
J'aimerai pouvoir comprendre le fonctionnement de ladite commande aussi, car çà pourrait me reservir ^^
Merci
Hors ligne
#2 Le 23/05/2010, à 10:46
- helly
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
ls -lh fichier.avi| cut -d " " -f5
Et pour le fonctionnement de cut :
man cut
Et pour avoir juste la valeur octale, vire le h !
Parce que avec h ça peut te donner un résultat genre 42M, sans le h tu auras 43008
Dernière modification par helly (Le 23/05/2010, à 10:49)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#3 Le 23/05/2010, à 10:58
- DarkHawk
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
Tu peux aussi le faire avec la commande "sed"
du -m /vers/ton/fichier | sed 's/\([0-9]*\).*/\1/'
Kubuntu Lucid Lynx 10.04 64 bits
AMD Phenom II X2 550 Black Edition
ATI HD5770
Hors ligne
#4 Le 23/05/2010, à 11:07
- helly
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
Par contre je viens de me rendre compte, fais gaffe avec tu du -m !!!
Ça affiche en Mo, et pour un fichier de taille < 1Mo , il affiche quand même 1…
je trouve ça moyen
ls -l(h) powa
Dernière modification par helly (Le 23/05/2010, à 11:08)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#5 Le 23/05/2010, à 11:11
- Link_Octree
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
Tu peux aussi le faire avec la commande "sed"
du -m /vers/ton/fichier | sed 's/\([0-9]*\).*/\1/'
Ca, c'est typhiquement le genre de commande que je retrouve assez souvent le sed, et qui est TOTALEMENT incompréhensible pour moi...
Pleins de caractères spéciaux à la suite... Sérieusement vous savez que cette commande fait celà et puis c'est tout, ou vous la comprenez dans ces moindres détails, car là chapeau
Hors ligne
#6 Le 23/05/2010, à 11:28
- helly
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
DarkHawk a écrit :Tu peux aussi le faire avec la commande "sed"
du -m /vers/ton/fichier | sed 's/\([0-9]*\).*/\1/'
Ca, c'est typhiquement le genre de commande que je retrouve assez souvent le sed, et qui est TOTALEMENT incompréhensible pour moi...
Pleins de caractères spéciaux à la suite... Sérieusement vous savez que cette commande fait celà et puis c'est tout, ou vous la comprenez dans ces moindres détails, car là chapeau
Bha donc tournes toi vers cut
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7 Le 23/05/2010, à 11:33
- johndo
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
le plus simple est d'utiliser stat
stat -c "%s" <fichier>
ensuite, on peut utiliser find :
find <dossier> -maxdepth 1 -name "<fichier>" -printf "%s\n"
et une autre solution qui me vient à l'esprit :
wc -c < <fichier>
comme quoi, plusieurs solutions sans utiliser des combinaisons d'instructions
Hors ligne
#8 Le 23/05/2010, à 16:27
- DarkHawk
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
DarkHawk a écrit :Tu peux aussi le faire avec la commande "sed"
du -m /vers/ton/fichier | sed 's/\([0-9]*\).*/\1/'
Ca, c'est typhiquement le genre de commande que je retrouve assez souvent le sed, et qui est TOTALEMENT incompréhensible pour moi...
Pleins de caractères spéciaux à la suite... Sérieusement vous savez que cette commande fait celà et puis c'est tout, ou vous la comprenez dans ces moindres détails, car là chapeau
Je te l'accorde, il faut aimer les expressions régulières!
Après pour connaitre tout ce qu'on peut faire avec sed, je te conseille soit un "man sed" soit ton moteur de recherche favori.
Pour l'exemple ci-dessus, s/regex/chaine/ ça veut "simplement" dire que tu cherches à faire une substitution de chaine (s pour substitution). On recherche une suite de chiffre [0-9]* qu'on veut récupérer \( ... \) suivi de n'importe quel caractère .* (qu'on ne souhaite pas récupérer).
Ensuite on affiche (substitue) ce qui a été récupéré (dans la variable n°1) avec \1.
J'espère que c'est plus clair
Kubuntu Lucid Lynx 10.04 64 bits
AMD Phenom II X2 550 Black Edition
ATI HD5770
Hors ligne
#9 Le 23/05/2010, à 19:50
- sputnick
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
...Et pour avoir juste la valeur octale, vire le h !
Parce que avec h ça peut te donner un résultat genre 42M, sans le h tu auras 43008
Heu non, c'est pas en octal, juste en kilo octets.
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#10 Le 23/05/2010, à 20:23
- twocats
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
Tu peux aussi le faire avec la commande "sed"
du -m /vers/ton/fichier | sed 's/\([0-9]*\).*/\1/'
Mouai... bien lourd pour pas grand chose (sed quoi).
awk '{print $1}' < <(du -k fichier)
Court, léger, rapide, efficace (awk quoi).
P.S. : cette réponse dissimule un troll sournois.:cool:
Dernière modification par twocats (Le 23/05/2010, à 20:23)
La réponse est 42
Hors ligne
#11 Le 23/05/2010, à 22:14
- sputnick
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
awk '{print $1}' < <(du -k fichier)
pas besoin de créer un file descriptor ou un FIFO :
du -k fichier | awk '{print $1}'
mais johndo a donné la meilleure solution :
stat -c "%s" <fichier>
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#12 Le 20/04/2018, à 10:26
- Molomo
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
Je me permet de déterrer le post car je suis tombé dessus et il est apparu très haut dans la liste des résultat.
Une solution avec un sed "simple" :
wc -c fichier | sed 's/\sfichier//'
ou bien
du -b fichier | sed 's/\sfichier//'
avec \s qui vaut un espace ou une tabulation
Hors ligne
#13 Le 20/04/2018, à 15:31
- Watael
Re : [bash] Obtenir seulement la taille d'un fichier (avec du)
salut,
pas besoin de sed avec wc :
wc -c < nomFichier
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne