Aide sur script bash

Aide sur script bash - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 13-08-2012 à 10:57:16    

Bonjour à tous,
 
Je continue à essayer des cripter avec bash et j'aurais besoin de vos lumieres !!
 
Je cherche à faire un script qui classe des fichiers en fonction de leur date de creation/modification.
 
La structure choisie doit etre du type :
 

Code :
  1. /
  2. -> /Annee
  3. -->/Mois
  4. ---> Fichiers classés
  5. fichiers à classer


 
Dans un premier temps je liste les fichiers du repertoire en prenant la date mais sans prendre les repertoires  

Code :
  1. ls -lrt | grep ^-


 
La ou je bloque c'est pour découper la date afin d'extraire la date, le mois
 
Est il possible en bash de decouper une date (ca je pense que sed ou awk peuvent le faire !!) mais de leur donner un nom de variable, un peu comme ne sql ou php avec AS ???
 
Merci pour vos réponses !!

Reply

Marsh Posté le 13-08-2012 à 10:57:16   

Reply

Marsh Posté le 13-08-2012 à 14:56:49    

bonjour,
 
un truc qui peut te faciliter la tache, c'est déjà l'option --time-style de ls qui te permettra d'obtenir le format de date qui te vas bien.
 
Avec cette option, tu pourras aussi ajouter un caractère de séparateur de champs qui t'aidera ensuite avec awk. Y'a sans doute plus propre mais ça marche  :o  
 
exemple rapidos si ton arbo est uniquement avec le numéro d'année et numéro de mois:

ls -l --time-style=+'§%m§%Y§' | grep ^- | while read ligne; do  
  fichier=$(echo $ligne|awk -F "§" '{print $4}'|sed 's/^ //')
  annee=$(echo $ligne|awk -F "§" '{print $3}')
  mois=$(echo $ligne|awk -F "§" '{print $2}')
  echo "le fichier \"$fichier\" doit être déplacé dans $annee/$mois"
done


 
ça vaut s'que ça vaut, quick'n dirty  [:fez666]


Message édité par smea le 13-08-2012 à 14:58:17
Reply

Marsh Posté le 14-08-2012 à 08:15:22    

salut,
 
bash dispose de "mécanismes de substitutions" qui permettent de se dispenser de awk ou sed.
Voyez man bash  Remplacement des paramètres

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed