[Shell] Récupérer date d'un fichier
Résolu
Bonjour,
j'ai une petite question sur les dates fichiers en ksh.
Je voudrais juste pouvoir récupérer la date d'un fichier précis avec un format du genre jj/mm/aaaa(format non fixé).
Avec la commande ls je liste tout les fichiers présent et j'ai leur date mais séparément.
Merci d'avance
^^
j'ai une petite question sur les dates fichiers en ksh.
Je voudrais juste pouvoir récupérer la date d'un fichier précis avec un format du genre jj/mm/aaaa(format non fixé).
Avec la commande ls je liste tout les fichiers présent et j'ai leur date mais séparément.
Merci d'avance
^^
Configuration: Windows XP Firefox 2.0.0.14
14 réponses
Résumé de la discussion
La discussion porte sur l’extraction de la date d’un fichier dans un shell ksh en utilisant un format jj/mm/aaaa, à partir d’un affichage ls qui liste mais ne formatte pas la date. Plusieurs approches ont été évoquées, notamment date -r fichier, ou des méthodes utilisant ls --full-time, sed ou awk pour reformater, et l’usage de stat sur certaines plateformes. Des différences entre systèmes (Linux, HP-UX, BSD) et les options ls non universelles exigent de parser avec awk/sed ou de recourir à date, et de vérifier la disponibilité des options.
-
essaye ca :
date -r [nomFichier]-
Voilà ce que ça me donne :
/home/fichiers #date -r valide.sql date: illegal option -- r Usage: date [-u] [+format] date [-u] [mmddhhmm[[cc]yy]] date [-a [-]sss.fff] /home/fichiers #date valide.sql date: bad conversion /home/fichiers #date -u mmddhhmm valide.sql date: bad conversion /home/fichiers #date -a valide.sql Usage: date [-u] [+format] date [-u] [mmddhhmm[[cc]yy]] date [-a [-]sss.fff] /home/fichiers #date -a -valide.sql Usage: date [-u] [+format] date [-u] [mmddhhmm[[cc]yy]] date [-a [-]sss.fff]
Je ne voie pas comment faire.
Je vais regarder de plus près le man date.
Merci comme même, si tu pense à autre chose je suis toujours preneur.
^^
PS : je rappel que je suis en ksh -
Contributeur@JOBiJOBa2Etrange, le date -r fonctionne chez moi sur ksh...
-
-
ModérateurVoir aussi ce vieux thread ;-))
-
Merci pour ce lien, ça ma beaucoup servi.
Ma solution :ll test.sh | awk '{print $7" "$6" "$8}'
oull test.sh | awk '{print $7"/"$6"/"$8}'
oull test.sh | awk '{print $7"-"$6"-"$8}'
Résultat :
2 Feb 2007
ou
2/Feb/2007
ou
2-Feb-2007
C'était tout ce que je demandais, on est peut être parti un peut trop loin.
Merci beaucoup tout le monde de votre aide.
^^
-
-
ModérateurSalut,
Qu'as-tu comme système ou comme distrib ?
-
-
@JOBiJOBa2Personne a une idée?
-
-
ModérateurRegarde du côté de la commande "stat" peut être :
stat -c %y fichier 2008-05-20 09:21:28.000000000 +0200
;-))
-
ModérateurNormalement la commande "stat" n'a rien à voir avec le shell utilisé. Que te renvoie la commande :
whereis stat
?
-
ModérateurOuais, elle n'est pas installée ;-((
Ben il te reste plus qu'à voir avec "ls --full-time" (si toutefois l'option est présente) et un saucissonage de la sortie avec "cut" ou "awk" ;-))
-
ModérateurQue renvoie "uname -a" ?
-
ModérateurSalut,
et comme ça?root@debian:~# ls -l --time-style=+'%d/%m/%Y' essai.txt -rw-r--r-- 1 aaa users 2 02/10/2007 essai.txt root@debian:~# ls -l --time-style=+'%d/%m/%Y' essai.txt | cut -d' ' -f6 02/10/2007
-
Voilà ce que cela me donne :
/home/fichiers/ #ls -l --time-style=+'%d/%m/%Y' test.sh | cut -d' ' -f6 ls: illegal option -- - ls: illegal option -- - ls: illegal option -- y ls: illegal option -- = ls: illegal option -- + ls: illegal option -- % ls: illegal option -- / ls: illegal option -- % ls: illegal option -- / ls: illegal option -- % ls: illegal option -- Y usage: ls -1ARadeCxmnlogrtucpFLbqisf [files]
-
-
ModérateurSalut,
sinon peut être une solution Perl?! -
ModérateurPERL , mouais, l'art de traire une puce avec des gants de boxe ;-)
Ce serait plus efficace de connaître la distribution et d'utiliser des outils légers, ... -
ModérateurCe serait plus efficace
En ce cas je laisse la place à l'efficacité.
-
ModérateurAffiche tout simplemnet
ls -l test.sh
--
106485010510997108-
-
Modérateur@JOBiJOBa2Non, il te demande d'afficher la sortie pour qu'on puisse voir à quoi elle correspond afin d'adapter un traitement en fonction...
-
-
-
-
Modérateuret ça alors
# ls -l essai.txt -rw-r--r-- 1 aaa users 2 2007-10-02 16:57 essai.txt # ls -l essai.txt| sed 's/.*\([0-9][0-9][0-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]\).*/\1\/\2\/\3/' 2007/10/02
Edit : Vu ta sortie oublie ce message ;-) -
ModérateurTa solution ne marche pas sur ton exemple
# echo "-rwxrwxrwx 1 jobi jobi 8607 May 20 11:12 test.sh" | awk '{print $7" "$6" "$8}' 20 May 11:12
La prochaine fois vaut mieux afficher ce que tu veux traiter, ça nous fera gagner de temps et pour toi aussi.
Si t'aurais affiché depuis le début .....