#1 Le 26/11/2015, à 14:02
- McRbt
[Résolu] Chercher fichier le plus récent selon la saisie
Bonjour,
Pour le besoin d'un script, j'aimerais boucler un traitement sur des fichiers correspondant à la saisie de l'utilisateur.
Je m'explique :
Dans un dossier, on a des fichier comme ceci : "8XX-20151126".
Le "8XX" correspond à une application bien spécifique et le "20151126" correspond à la date à laquelle ce dossier a été enregistré.
Je souhaiterais, si l'utilisateur saisie "825", récupérer le dossier "825-XXXXXXXX" le plus récent.
Voici ce que j'ai commencé à faire, mais ce début de script me sors juste le fichier le plus récent tel qu'il soit, sans faire attention à la saisie de l'utilisateur :
#!/bin/bash -x
read -p 'Entrez numéro instance (e.g.: 825) : ' PROCEED
if [ "$PROCEED" -eq `find "$PROCEED"* | head -1 | cut -d- -f1` ] ; then
echo "Le fichier le plus récent est : "
echo `ls -got| grep \.txt$ | head -1 | awk '{print $7}'`
else
echo "Aucun fichier correspondant à l'instance."
fi
Cordialement,
McRbt
Dernière modification par McRbt (Le 26/11/2015, à 16:29)
Hors ligne
#2 Le 26/11/2015, à 14:44
- soshy
Re : [Résolu] Chercher fichier le plus récent selon la saisie
Ce que fait reellement ton script :
si le numero saisi existe dans ta liste de fichiers alors afficher le plus recent (cree ou modifie je ne sais pas trop) de tous les fichiers.
il faut changer ta ligne
echo `ls -got| grep \.txt$ | head -1 | awk '{print $7}'`
avec par exemple (je ne dis pas que la solution est bonne, mais elle devrait fonctionner)
echo `ls -got $PROCEED* | grep \.txt$ | head -1 | awk '{print $7}'`
Avec ca, le ls ne retourne que les fichiers qui commencent par la saisie utilisateur. On aurait aussi pu mettre le filtre de $PROCEED dans le grep. Ou alors on pourrait aussi enlever le grep faire
ls -got $PROCEED*.txt
en gardant la suite.
Plein de solutions ! :-)
Certaines meilleures que d'autre mais moi je ne suis pas qualifie pour juger.
Dernière modification par soshy (Le 26/11/2015, à 14:52)
Hors ligne
#3 Le 26/11/2015, à 14:53
- McRbt
Re : [Résolu] Chercher fichier le plus récent selon la saisie
soshy,
J'ai tout essayé sauf cette solution qui me paraît toute simple maintenant.
Je te remercie, ça fonctionne à merveille.
Je passe en résolu.
Cordialement,
McRbt
Hors ligne
#4 Le 26/11/2015, à 15:20
- pingouinux
Re : [Résolu] Chercher fichier le plus récent selon la saisie
Bonjour,
Et pourquoi pas ceci
ls -t $PROCEED*.txt | head -1
Hors ligne
#5 Le 26/11/2015, à 15:38
- McRbt
Re : [Résolu] Chercher fichier le plus récent selon la saisie
pingouinux,
Encore plus simple, merci.
Est-ce possible de placer cette commande dans une variable, de façon à la réutiliser ultérieurement ?
Du style :
RECENT_FILE_PROCEED=`ls -t $PROCEED*.txt | head -1`
Cordialement,
McRbt
EDIT : Après quelques tests, j'ai obtenu le résultat obtenu, aussi au niveau de la variable. Merci à tout les deux, à la prochaine !
Dernière modification par McRbt (Le 26/11/2015, à 15:41)
Hors ligne
#6 Le 26/11/2015, à 15:49
- MicP
Re : [Résolu] Chercher fichier le plus récent selon la saisie
En utilisant les tableaux bash:
RECENT_FILE_PROCEED=$(liste=($(ls -t ${PROCEED}*));echo $liste)
Dernière modification par MicP (Le 26/11/2015, à 19:01)
Hors ligne
#7 Le 26/11/2015, à 15:51
- McRbt
Re : [Résolu] Chercher fichier le plus récent selon la saisie
MicP, pingouinux, soshy,
Comment effectuer cette commande sur un dossier spécifique ? Où doit-on indiquer le chemin ? Peut-on le faire avec ls ?
Hors ligne
#8 Le 26/11/2015, à 15:57
- MicP
Re : [Résolu] Chercher fichier le plus récent selon la saisie
Tu pourrais utiliser une variable qui serait concaténée avec ${PROCEED} :
read -p 'Entrez le répertoire : ' chemin
RECENT_FILE_PROCEED=$(liste=($(ls -t ${chemin}/${PROCEED}*));echo "$liste")
ou bien :
read -p 'Entrez le répertoire : ' chemin
RECENT_FILE_PROCEED=`ls -t ${chemin}/${PROCEED}* | head -1`
EDIT : J'avais oublié la "bonne étoile" et ajouté un ".txt" en trop, j'ai donc modifié mes messages.
Dernière modification par MicP (Le 26/11/2015, à 19:02)
Hors ligne
#9 Le 26/11/2015, à 16:15
- McRbt
Re : [Résolu] Chercher fichier le plus récent selon la saisie
MicP,
Je me sens un peu stupide, j'aurais dû y penser...
Merci encore, sans surprise : ça fonctionne.
Cordialement,
McRbt
Hors ligne