Info statistiques sur un fichier Unix
Fermé
karlus79
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
16 février 2006
-
16 févr. 2006 à 00:19
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 17 févr. 2006 à 11:21
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 17 févr. 2006 à 11:21
A voir également:
- Info statistiques sur un fichier Unix
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
12 réponses
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
16 févr. 2006 à 00:38
16 févr. 2006 à 00:38
Je ne sais pas quelle est ta distribution. Debian contient l'outil ... stat
qui fait vraissemblement appel à stat(2)
doit faire ton bonheur.
--> package coreutils , donc pas de soucis avec Debian
En faisant une rapide recherche , je vois qu'il existe un paquage coreutils pour Suze.
Si tu utilises une distribution basée sur rpm, , stat est peut-être déjà disponible, ou un paquage 'coreutils' est sans doute disponible.
Johan
qui fait vraissemblement appel à stat(2)
johand@horus:~$ touch brol johand@horus:~$ lastmod=$(stat -c '%y' brol |cut -b -19) johand@horus:~$ echo $lastmod 2006-02-16 00:31:12
doit faire ton bonheur.
johand@horus:~$ dpkg -S $(which stat) coreutils: /usr/bin/stat
--> package coreutils , donc pas de soucis avec Debian
En faisant une rapide recherche , je vois qu'il existe un paquage coreutils pour Suze.
Si tu utilises une distribution basée sur rpm, , stat est peut-être déjà disponible, ou un paquage 'coreutils' est sans doute disponible.
Johan
karlus79
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
16 février 2006
16 févr. 2006 à 09:41
16 févr. 2006 à 09:41
Merci pour ton intervention, mais ça ne marche toujours pas :
ksh: stat: not found
La fonction "stat" n'est pas reconnue : ce n'est pas un commande shell...
ksh: stat: not found
La fonction "stat" n'est pas reconnue : ce n'est pas un commande shell...
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
16 févr. 2006 à 09:45
16 févr. 2006 à 09:45
Pourquoi ne te contentes tu pas simplement de reformater dans ton script la sortie de ls -l avec des cut ou des awk ?
Bonne chance
Bonne chance
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
16 févr. 2006 à 09:50
16 févr. 2006 à 09:50
... et transformer le format de date proposé dans le format qui te convient avec la commande "date".
Dal
Dal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
karlus79
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
16 février 2006
16 févr. 2006 à 10:18
16 févr. 2006 à 10:18
J'ai essayé avec ls -l
Voici le résultat :
-rw-r--r-- 1 ksab sco 9 Dec 15 2004 fic.txt
-rw-r--r-- 1 ksab sco 0 Aug 19 2005 t1.txt
-rw-r--r-- 1 ksab sco 326 Feb 14 17:34 test.c
Les vieux fichiers ont un format date = mois jour annee
alors que les fichiers récents ont un format mois jour heure:minute
Ce n'est pas très homogène !! On a 2 formats de date selon que le fichier est récent ou ancien !!
N'ayant pas le package coreutils sur la machine Sun, je ne peux pas utiliser la fonction stat...
Voici le résultat :
-rw-r--r-- 1 ksab sco 9 Dec 15 2004 fic.txt
-rw-r--r-- 1 ksab sco 0 Aug 19 2005 t1.txt
-rw-r--r-- 1 ksab sco 326 Feb 14 17:34 test.c
Les vieux fichiers ont un format date = mois jour annee
alors que les fichiers récents ont un format mois jour heure:minute
Ce n'est pas très homogène !! On a 2 formats de date selon que le fichier est récent ou ancien !!
N'ayant pas le package coreutils sur la machine Sun, je ne peux pas utiliser la fonction stat...
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
16 févr. 2006 à 10:30
16 févr. 2006 à 10:30
Et si tu faisais ce que moi et [Dal] te proposons ?
karlus79
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
16 février 2006
16 févr. 2006 à 11:09
16 févr. 2006 à 11:09
Merci pour votre aide mamiemando et Dal.
L'utilisation de ls -l était bien ma 1ere idée mais comme je l'ai dit, ça ne marche pas à tous les coups. Je détaille mon explication :
1er ls sur un VIEUX fichier : ls -l fic.txt
-rw-r--r-- 1 ksab sco 9 Dec 15 2004 fic.txt
2eme ls sur un fichier RECENT : ls -l test.c
-rw-r--r-- 1 ksab sco 326 Feb 14 17:34 test.c
Comme on peut le voir, le 1er ls me donne un format de date différent du 2eme ls...
L'utilisation de ls -l ne me garantit pas un affichage de la date avec un format parfaitement identifiable puisque un coup j'ai un format <Month> <Day> <Year>, un coup j'ai un format <Month> <Day> <Heure>:<Minute>
Moi, j'aimerais bien connaitre une façon de faire pour qu'au final, j'ai toujours un format complet du style <Year> <Month> <Day> <Heure> <Minute>
L'utilisation de ls -l était bien ma 1ere idée mais comme je l'ai dit, ça ne marche pas à tous les coups. Je détaille mon explication :
1er ls sur un VIEUX fichier : ls -l fic.txt
-rw-r--r-- 1 ksab sco 9 Dec 15 2004 fic.txt
2eme ls sur un fichier RECENT : ls -l test.c
-rw-r--r-- 1 ksab sco 326 Feb 14 17:34 test.c
Comme on peut le voir, le 1er ls me donne un format de date différent du 2eme ls...
L'utilisation de ls -l ne me garantit pas un affichage de la date avec un format parfaitement identifiable puisque un coup j'ai un format <Month> <Day> <Year>, un coup j'ai un format <Month> <Day> <Heure>:<Minute>
Moi, j'aimerais bien connaitre une façon de faire pour qu'au final, j'ai toujours un format complet du style <Year> <Month> <Day> <Heure> <Minute>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
16 févr. 2006 à 13:38
16 févr. 2006 à 13:38
Salut,
Essaie avec :
Essaie avec :
ls --full-time"man ls" ... y'a tout ce qu'il faut dedans ;-))
karlus79
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
16 février 2006
16 févr. 2006 à 14:12
16 févr. 2006 à 14:12
L'option--full-time n'est pas dispo dans mon OS (SunOS 5.8).
Je ne dispose pas des packages fileutils ou coreutils qui autorisent cette option --full-time !
Voici la seule syntaxe possible avec mon ls :
SYNOPSIS
/usr/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file ... ]
/usr/xpg4/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file ... ]
donc pas d'option --full-time : dommage !
Bon, je crois sincèrement qu'il n'y a pas de solution shell sans utiliser les packages mentionnés ci-dessus, ni sans passer par un développement en C (utilisation de la fonction stat).
Je crois que c'est la conclusion... Je baisse les bras !
Merci à tous pour votre participation et votre aide.
Je ne dispose pas des packages fileutils ou coreutils qui autorisent cette option --full-time !
Voici la seule syntaxe possible avec mon ls :
SYNOPSIS
/usr/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file ... ]
/usr/xpg4/bin/ls [ -aAbcCdfFgilLmnopqrRstux1 ] [ file ... ]
donc pas d'option --full-time : dommage !
Bon, je crois sincèrement qu'il n'y a pas de solution shell sans utiliser les packages mentionnés ci-dessus, ni sans passer par un développement en C (utilisation de la fonction stat).
Je crois que c'est la conclusion... Je baisse les bras !
Merci à tous pour votre participation et votre aide.
Salut,
Y'en a pas pour long à installer coreutils mais bon...
Avec find, ça peut passer peut-etre (C'est pas plus une commande de ksh, mais j'ose espéré qu'elle est installée)
Y'en a pas pour long à installer coreutils mais bon...
Avec find, ça peut passer peut-etre (C'est pas plus une commande de ksh, mais j'ose espéré qu'elle est installée)
find . -name ton_fichier -printf %t\\n
mamiemando
Messages postés
33079
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 avril 2024
7 749
17 févr. 2006 à 09:20
17 févr. 2006 à 09:20
Sinon tu peux faire un script python ou perl, qui sera portable en plus, et qui parse le résultat de ls -l à l'aide d'une regexp par format de date. Mais bon ça force à avoir installé python ou perl donc au final tu as sans doute meilleur temps d'installer les core-utils...
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
17 févr. 2006 à 11:07
17 févr. 2006 à 11:07
Avec un script, awk, un test et date, on peut s'en sortir.
Voilà un exemple en bash, traitant une ligne issue de "ls -al" passée en argument :
La commande ci-dessus passe les lignes renvoyées par "ls -al" en argument entre guillements au script, et interprète les dates dans le format voulu dans tous les fichiers du répertoire courant. Celà fonctionne sur ma machine FreeBSD.
Dal
Voilà un exemple en bash, traitant une ligne issue de "ls -al" passée en argument :
$ cat testdate.sh #!/usr/local/bin/bash ST="$1" FICHIER=`echo $ST | awk '{ print $9 }'` LADATE=`echo $ST | awk '{ print $6 " " $7 " " $8 }'` if [ "$LADATE" != " " ] then echo -n "date de $FICHIER : " if [ "`echo $LADATE | sed 's/\(.*\)\(:\)\(.*\)//'`" = "" ] then date -j -f "%b %d %R" "$LADATE" +"%F %T" else date -j -f "%b %d %Y" "$LADATE" +"%F" fi else echo "$ST ne semble pas comporter de date" fi $ ls -al | sed 's/^\(.*\)$/\"\1\"/' | xargs -L 1 ./testdate.sh
La commande ci-dessus passe les lignes renvoyées par "ls -al" en argument entre guillements au script, et interprète les dates dans le format voulu dans tous les fichiers du répertoire courant. Celà fonctionne sur ma machine FreeBSD.
Dal
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
17 févr. 2006 à 11:21
17 févr. 2006 à 11:21
La version "date" de Linux a des commandes légèrement différentes, et les tests sur la date peuvent être écrits sans avoir à décrire le format en entrée, respectivement comme ceci, selon que l'heure soit disponible ou pas :
Remplacer également la première ligne par "#!/bin/bash", emplacement habituel de bash sous Linux.
Dal
date -d "$LADATE" +"%F %T" date -d "$LADATE" +"%F"
Remplacer également la première ligne par "#!/bin/bash", emplacement habituel de bash sous Linux.
Dal