Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2251 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  Script Bash de rangement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script Bash de rangement

n°618642
analogx
Posté le 11-01-2005 à 16:04:12  profilanswer
 

Bonjour,
 Je cherche a faire un script Bash me permettant d'organiser un repertoire.
 Il y a dans ce répertoire une quantite (20Go) de fichiers que je souhaite ranger dans des repertoires correspondant a la date de creation des fichiers, bien entendu les repertoires "date" ne sont pas crées.
A vrai dire je bloque un peu, voici mes débuts :
 
for x in ` ls -l | tr -s " " | cut -d " " -f6,8` ; do
   // nom dossier cible et fichier
   echo $x;
done
 
merci pour votre coup de main ...
analogx

mood
Publicité
Posté le 11-01-2005 à 16:04:12  profilanswer
 

n°618644
Mjules
Modérateur
Parle dans le vide
Posté le 11-01-2005 à 16:12:12  profilanswer
 

à tester :

Code :
  1. for x in ` ls -l | tr -s " " | cut -d " " -f6,8` ; do
  2.    // nom dossier cible et fichier
  3.    mkdir "$x"
  4. // on récupère le champ contenant le ou les noms des fichiers modifés à cette date
  5.    for f in `ls -l | tr -s " " | grep "$x"|cut -d " " -f9`; do
  6.    mv $f "./$x/"
  7.     done
  8. done


Message édité par Mjules le 11-01-2005 à 16:16:54

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°618646
analogx
Posté le 11-01-2005 à 16:15:57  profilanswer
 

Mjules a écrit :

pour créer le dossier :

for x in ` ls -l | tr -s " " | cut -d " " -f6,8` ; do
   // nom dossier cible et fichier
   mkdir "$x"
done



 
 
jusque la ok mais c apres que je bloque ....

n°618647
Mjules
Modérateur
Parle dans le vide
Posté le 11-01-2005 à 16:16:19  profilanswer
 

j'ai édité


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°618648
Mjules
Modérateur
Parle dans le vide
Posté le 11-01-2005 à 16:17:12  profilanswer
 

ça serait peut-être plus élégant et sur avec un find


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°618649
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 11-01-2005 à 16:18:51  profilanswer
 

euh ouais, find c'est mieux quand même :D


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°618650
Mjules
Modérateur
Parle dans le vide
Posté le 11-01-2005 à 16:21:07  profilanswer
 

sur, mais j'ai la polio sur le regexp et en plus j'ai pas les yeux en face des trous. J'ai pas trouvé l'option qui va bien pour chercher un fichier modifié à une date donnée.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°618651
analogx
Posté le 11-01-2005 à 16:25:14  profilanswer
 

Mjules a écrit :

sur, mais j'ai la polio sur le regexp et en plus j'ai pas les yeux en face des trous. J'ai pas trouvé l'option qui va bien pour chercher un fichier modifié à une date donnée.


 
On m'a aussi aiguille vers find mais comme toi je ne sais pas comme trouve l'option qui va bien pour cherche un fichier modifié à une date donné ....
merci qd meme pour toutes ces infos :)
 
analogx

n°618654
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 11-01-2005 à 16:30:46  profilanswer
 

-mtime :)


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°618656
Mjules
Modérateur
Parle dans le vide
Posté le 11-01-2005 à 16:32:44  profilanswer
 

-mtime n    Fichier dont les données ont été modifiées il y a n*24 heures.
 
il faut calculer le temps qui s'est écoulé depuis la date récupérée par ls :/


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
mood
Publicité
Posté le 11-01-2005 à 16:32:44  profilanswer
 

n°618657
analogx
Posté le 11-01-2005 à 16:35:30  profilanswer
 

Mjules a écrit :

-mtime n    Fichier dont les données ont été modifiées il y a n*24 heures.
 
il faut calculer le temps qui s'est écoulé depuis la date récupérée par ls :/


 
en lisant : http://lea-linux.org/trucs/item.391.html
 
j'ai fais ceci :
 
#!/bin/bash
 
for i in * ; do
 varmonth=`ls -l $i | tr -s " " | cut -d " " -f6`
 mkdir $varmonth
 cp $i ./$varmonth
done

n°618663
Mjules
Modérateur
Parle dans le vide
Posté le 11-01-2005 à 16:50:39  profilanswer
 

effectivement, c'est beaucoup + simple :)


Message édité par Mjules le 11-01-2005 à 16:50:47

---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
n°618667
Pillow
'cos the trees won't talk
Posté le 11-01-2005 à 17:02:56  profilanswer
 

analogx a écrit :

en lisant : http://lea-linux.org/trucs/item.391.html
 
j'ai fais ceci :
 
#!/bin/bash
 
for i in * ; do
 varmonth=`ls -l $i | tr -s " " | cut -d " " -f6`
 mkdir $varmonth
 cp $i ./$varmonth
done


 
 
J'espère pour toi que tu n'as pas de données importantes dans ton dossier, et que tu ne comptes pas réutiliser le script.
Parce que là tu va avoir des problèmes si tu as des fichiers avec des espaces dans leur nom. Sur un gros dossier ça va cracher des erreurs par centaines à cause du mkdir, et tu ne verras pas les vrais erreurs. Et si pour une raison ou une autre le dossier n'est pas créé (fichier qui porte le nom d'un mois?) ça ne va pas être beau à voir [:petrus75]  
Mais si c'est pour utiliser uen seule fois sur un seul dossier, ça peut suffir :)

n°618672
analogx
Posté le 11-01-2005 à 17:09:18  profilanswer
 

apres correction :
 
#!/bin/bash
 
for i in `find . -type f` ; do
 varmonth=`ls -l $i | tr -s " " | cut -d " " -f6`
 if [ ! -d $varmonth ]; then
        mkdir $varmonth
 fi
cp $i ./$varmonth
done
 
 
pour infos tous les fichiers dans le repertoire sont de la forme :
1082998074.21828_0.bastion
 
aussi pour infos, un "du -sh" dans ce meme repertoire retourne 20Go.
A vrai dire c'est ce dernier point qui m'inquiete un peu ...
 
merci encore pour vos aides et points de vue ;)
 
analogx


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  Script Bash de rangement

 

Sujets relatifs
[script SH] - paramètre avec * - [resolu]Je cherche script, qui déplace un fichier dans un dossier avec son nom
script sshScript : remplacement dans un fichier
script fichier recenterreur d'exécution d'un script shell
Script de reconnexionApache + script
Extraction[BaSH]Conversion[bash]
Plus de sujets relatifs à : Script Bash de rangement


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)