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

 


Dernière réponse
Sujet : Script Bash de rangement
analogx 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
analogx 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
Pillow

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 :)

Mjules effectivement, c'est beaucoup + simple :)
analogx

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

Mjules -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 :/
black_lord -mtime :)
analogx

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

Mjules 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.
black_lord euh ouais, find c'est mieux quand même :D
Mjules ça serait peut-être plus élégant et sur avec un find
Mjules j'ai édité
analogx

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 ....

Mjules à 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

analogx 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

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