Récup de fichiers récents via script shell
Résolu/Fermé
A voir également:
- Récup de fichiers récents via script shell
- Script vidéo youtube - Guide
- Fichiers récents - Guide
- Explorateur de fichiers - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
9 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 août 2007 à 10:59
25 août 2007 à 10:59
Salut,
Il eût été plus simple de faire la recherche directement sur le répertoire (d'origine) contenant les fichiers, mais bon...
Voilà un bout de code commenté, en espérant qu'il fasse ce que tu espères :
Il eût été plus simple de faire la recherche directement sur le répertoire (d'origine) contenant les fichiers, mais bon...
Voilà un bout de code commenté, en espérant qu'il fasse ce que tu espères :
#! /bin/bash # Décommenter pour débuguer le script #set -xv # Récupération date référence var_date=$(date "+%Y/%m/%d" --date "-15 days") # Transformation en valeur "epoch" var_butoir=$(date --date "$var_date" +%s) # Boucle sur le fichier while read ligne do # On teste si la ligne commence par 2 chiffres suivis d'un slash if egrep -o "^[0-9]{2}/" <<<"$ligne" >/dev/null then # On récupère la date qui est sous la forme jj/mm/yyyy valeur_brute=$(awk -F" " '{ print $1 }' <<<"$ligne") # On la transforme en yyyy/mm/jj valeur=$(echo "$valeur_brute" | sed 's|\(..\)/\(..\)/\(.*\)|\3/\2/\1|') # Transformation en valeur "epoch" valeur_epoch=$(date --date "$valeur" +%s) # On compare les 2 valeurs et si la valeur est supérieure ou égale if [ "$valeur_epoch" -ge "$var_butoir" ] then echo "$ligne" # On l'affiche (toi tu fais ce que tu veux) fi else # Si la ligne ne commence pas par 2 chiffres suivis d'un slash #+ On saute à la ligne suivante continue fi done < fichier;-))
Merci mille fois, cela marche parfaitement !!!
Je peux en profiter pour te demander comment (si tu as le temps) tu fais pour remplacer des \ par des / car je bute sur ce nouveau problème, j'essaye avec sed mais ça ne fonctionne pas :
echo Rpertoire de D:\Temp\Site V2.0\Comique\Videos_Anims\Prouesses|sed -e "s/\\/\//g"
En fait je découvre simplement que sed ne voit pas mes \ dans la chaine donnée en entré...
Merci si tu connais une astuce !
Je peux en profiter pour te demander comment (si tu as le temps) tu fais pour remplacer des \ par des / car je bute sur ce nouveau problème, j'essaye avec sed mais ça ne fonctionne pas :
echo Rpertoire de D:\Temp\Site V2.0\Comique\Videos_Anims\Prouesses|sed -e "s/\\/\//g"
En fait je découvre simplement que sed ne voit pas mes \ dans la chaine donnée en entré...
Merci si tu connais une astuce !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 août 2007 à 14:03
25 août 2007 à 14:03
echo "20\10\2007" | sed 's|\\|/|g' 20/10/2007;-))
Trop rapide, merci, mon problème venait aussi du fait que je faisais un echo 20\10\2007 | sed 's|\\|/|g' et sans les " ça ne me donnait rien...
Des reflexes à prendre heureusement qu'il y a de l'aide !!!
Des reflexes à prendre heureusement qu'il y a de l'aide !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 août 2007 à 14:13
25 août 2007 à 14:13
Ça viendra ;-))
Bon voilà j'ai un peu peaufiné le script que tu m'as concocté pour qu'il corresponde mieux à ce que je veux (je ne voulais pas trop t'en demander d'un coup !) mais à nouveau un petit problème de / : je colle ici juste le début du fichier, en fait mon problème est que dès le départ le read ligne n'affiche pas les / car en plus de la liste des fichiers comme vu lors de ma première question un path vers les fichiers est précisé et je voudrais l'utiliser :
Voilà le script :
#! /bin/bash
# Décommenter pour débuguer le script
set -xv
# Récupération date référence
var_date=$(date "+%Y/%m/%d" --date "-15 days") # Transformation en valeur "epochh
"
var_butoir=$(date --date "$var_date" +%s)
# Boucle sur le fichier
while read ligne
do
if egrep "pertoire" <<< "$ligne" >/dev/null
then
echo $ligne
Et là au lieu de m'afficher : Rpertoire de D:\Temp\Site V2.0\Comique\Videos_Anims\Prouesses
il m'affiche : Rpertoire de D:TempSite V2.0ComiqueVideos_AnimsProuesses
????
Voilà le script :
#! /bin/bash
# Décommenter pour débuguer le script
set -xv
# Récupération date référence
var_date=$(date "+%Y/%m/%d" --date "-15 days") # Transformation en valeur "epochh
"
var_butoir=$(date --date "$var_date" +%s)
# Boucle sur le fichier
while read ligne
do
if egrep "pertoire" <<< "$ligne" >/dev/null
then
echo $ligne
Et là au lieu de m'afficher : Rpertoire de D:\Temp\Site V2.0\Comique\Videos_Anims\Prouesses
il m'affiche : Rpertoire de D:TempSite V2.0ComiqueVideos_AnimsProuesses
????
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 août 2007 à 15:45
25 août 2007 à 15:45
Re-
;-)
while read -r ligneÇa permet de ne pas prendre en compte le "\" qui est normalement un caractère d'échappement et donc de le percevoir sous sa forme littérale.
;-)
Sinon, une autre solution assez élégante, reposant sur la comparaison de date entre fichiers se trouve là:
http://www.lea-linux.org/cached/index/Trucs:Travailler_sur_un_ensemble_de_fichiers.html
En gros, creation d'un fichier à la date voulue, puis on "find" tous les fichiers plus récents que celui ci
Pas compliqué !
http://www.lea-linux.org/cached/index/Trucs:Travailler_sur_un_ensemble_de_fichiers.html
En gros, creation d'un fichier à la date voulue, puis on "find" tous les fichiers plus récents que celui ci
Pas compliqué !