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". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#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 big_smile

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 wink

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

tongue

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 hmm

ls -l(h) powa big_smile

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)

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 yikes

Hors ligne

#6 Le 23/05/2010, à 11:28

helly

Re : [bash] Obtenir seulement la taille d'un fichier (avec du)

Link_Octree a écrit :
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 yikes

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)

Link_Octree a écrit :
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 yikes

Je te l'accorde, il faut aimer les expressions régulières! wink
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 wink


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)

helly a écrit :

...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.


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#10 Le 23/05/2010, à 20:23

twocats

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/'

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>

bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

Haut de page ↑