IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Déplacement de fichiers par x quantités


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut Déplacement de fichiers par x quantités
    bonjour j'ai actuellement un repertoire contenant tellement de fichier que je n'en connait pas le nombre exact (resultat d'une videosurveillance perso)

    je souhaiterais faire des repertoires d'environ 5000 fichiers pour pouvoir les trier par date ulterieurement.

    mon probleme est que je ne trouve pas comment faire cette demarche (je debute en shell).
    sur de plus petit repertoires j'ai trouver comment deplacer les fichier en fonction de la date pour les mettre dans un rep avec le nom de cette meme date.
    mais la je ne connais pas les dates des fichiers contenus ce tres gros repertoire.
    l'idee selon moi passerais par une boucle mais je ne vois pas du tout comment la structurer.

    merci

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Quel système d'exploitation utilises tu ? Quel système de fichiers ? Pourquoi ne pas les trier par date tout de suite ? Pourquoi des répertoires de 5000 fichiers ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    le système d'exploitation utilisé est un système embarqué sur un nas dns-323 base sur linux avec fun-plug installé, auquel j’accède par telnet

    le système de fichier est ext3

    je ne peut pas les trier maintenant car je ne connait pas la date exacte des fichiers et que pour le moment, sur les fichier dont je connaissaient la date, j'utilisais cette dernière pour générer les répertoires de stockage selon l'arborescence suivante:
    --> mois
    .............|--> jour
    .........................| --> heure
    .........................| --> heure
    .............|--> jour
    .........................| --> heure
    .........................| --> heure

    et je fais a partir du nom suivant:

    E8ABFA1014FE(cam_ext)_1_20130701042841_171173.jpg"

    ou je récupère a la main, après l'underscore qui suis le 1 tout seul, la chaîne de caractère qui contient la date et l'heure mais vu que sur le répertoire qui m’intéresse je ne connaît pas les dates je ne peut pas le faire.

    je souhaite des répertoires de 5000 fichiers juste pour pouvoir les ouvrir relativement facilement a travers le réseau et pouvoir lire mes fichiers pour les trier.

    merci

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Si tous tes fichier suivent le même format, un script comme celui-ci suffit à créer et et ranger les fichiers dans les bons répertoires:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    find repertoire -name "*.jpg" -exec bash -c '
    for i do
      echo "$i"
      ts=$(echo "$i" | sed -e 's/.*_1_//' -e 's/......_......\.jpg//')
      y=${ts:0:4}
      m=${ts:4:2}
      d=${ts:6:2}
      echo mkdir -p $y/$m/$d
      echo mv "$i" $y/$m/$d
    done' bash {} +
    Retirer les "echo" devant "mkdir" et "mv" si ok.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    merci je regarde, fais un essais et te tiens au courants.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    donc je te donne des nouvelles tout est impec ton script avec une petite variante tourne depuis hier 17h30 .

    mais si cela ne t’embête pas pourrais-tu confirmer et expliquer quelques truc dans le script?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    find $1 -iname "*.jpg" -exec bash -c '
    for i do
    	echo "$i"
    	ts=$(echo "$i" | sed -e 's/.*_1_//' -e 's/...._......\.jpg//')
    	y=${ts:0:4}
    	m=${ts:4:2}
    	d=${ts:6:2}
    	h=${ts:8:2}
    	mkdir -p $y/$m/$d/$h
    	mv "$i" $y/$m/$d/$h
    done' bash {} +
    1e question : le -exec bash -c je ne connais pas peux-tu donner un ou deux détails ? ainsi que sur bash {} +

    2e question: dans sed le premier -e sert a remplacer tout ce qu'il y a jusqu'au "1_" par rien "//" si oui je ne comprend pas le fonctionnement de la deuxième partie.j'ai bien compris qu'elle servait à générer les variables d’année, mois, ... puisque j'ai réussi à faire une modif à ce niveau, mais je n'ai pas compris le fonctionnement du 2e "-e" .

    3e question: je souhaiterais compter les fichier de chaque répertoire et renommer chaque répertoire avec en plus le nombre de fichier:

    2013
    ....|---> 06
    .............|---> 18
    .......................|--> 17-75
    ce qui donnerait que dans le répertoire du 18 06 2013 17h il y a 75 fichiers.

    pour ce faire je comptais me positionner sur le répertoire jour pour lancer le script en faisant une boucle "for" avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NBFICH1=$(ls -A1 $rep | wc -l) 
    mv $rep $rep-$NBFICH1
    merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de fichiers par déplacement
    Par FotoXe33 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 30/10/2009, 16h59
  2. Réponses: 17
    Dernier message: 15/05/2007, 18h35
  3. Peut on manipuler le système de fichier par T-SQL?
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2003, 09h19
  4. Réponses: 1
    Dernier message: 19/08/2003, 16h11
  5. Supprimer un fichier par rapport a une date
    Par NewB dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2003, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo