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 :

[aide script shell] renommage de repertoire / sous repertoire / fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Par défaut [aide script shell] renommage de repertoire / sous repertoire / fichier
    bonjour,

    je m'inscrit sur votre forum car je n'arrive pas a résoudre pour prb. je suis débutant en shell et je coince pour créér un petit script me permettant de déplacer tous les fichiers vidéo stocke dans un répertoire ou sous répertoire vers un autre emplacement.

    le déplacement me pose prb lorsque les répertoires ou sous répertoire ou fichiers contiennent un ou plusieurs espaces dans leur nom.

    donc au début de mon script il faudrait que je remplace tous les espaces par des _.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cd mon repertoire
    for file in * ;do
    mv -T "$file" ${file// /_}
    done
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd mon repertoire
    rename 's/ /_/g' *
    le renommage se fait bien sur les répertoires ou nom de fichiers. mais je souhaiterai donc que cela s'applique egalement aux sous répertoires (et fichiers contenu dans ces sous rep)

    j'ai essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd mon repertoire
    ls -1 * | xargs rename 's/ /_/g' *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd mon repertoire
    find * | xargs rename 's/ /_/g' *
    mais ne fonctionne pas...

    auriez une petite idee afin de réaliser le renommage sur l'ensemble du répertoire et sous répertoire ?

    merci d'avance pour votre aide

  2. #2
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 20
    Par défaut
    il existe la commande ls -R <nom_du répertoire>, mais je ne sais pas qi cela te conviendra par la suite.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Par défaut
    je ne connaissais pas cette option (--recursive ) mais me donne le même résultat que ls * ou find * . afficher les sous rep et fichier pas de soucis mais exécuter une commande dessus c'est la que je coince...

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find rep/ -type f -exec rename 's/ /_/g' {} \;
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Par défaut
    merci mais idem ne modifie que les fichiers dans le rep initial , les fichiers contenu dans les sous rep ne sont pas impactés...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut,

    et en ajoutant l'option suivante à find, ça donne quoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     -depth Process each directory's contents before the directory itself.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 9
    Par défaut
    alors en fait si cela fonctionne si j'utilise la commande autant de fois qu'il y à de sous répertoires !

    à la première exécution j'ai des messages du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    find: "/home/cyril/downloads/complete/test 1": Aucun fichier ou dossier de ce type
    find: "/home/cyril/downloads/complete/test  2": Aucun fichier ou dossier de ce type
    find: "/home/cyril/downloads/complete/test    4 a": Aucun fichier ou dossier de ce type
    find: "/home/cyril/downloads/complete/test   3": Aucun fichier ou dossier de ce type
    à la deuxième exécution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find: "/home/cyril/downloads/complete/test___3/test   4": Aucun fichier ou dossier de ce type
    à la troisieme tous les rep et sous rep sont renommés ...

    apres j'utilise la même commande pour les fichiers et la cela fonctionne partout car il n'y a plus d'espace dans les noms de rep ^^


    si j'ajoute l'option -depth >> idem oblige de le faire le nombre de fois le nombre de sous répertoire avec une erreur un peu différente:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Can't rename /home/cyril/downloads/complete/test 2/sous rep /home/cyril/downloads/complete/test_2/sous_rep: Aucun fichier ou dossier de ce type
    bon vous me direz il suffit de lancer plusieurs fois la commande et tant pis pour les erreurs de retour qui ne seront pas visibles lors de l'exécution du script en mode graphique

    merci a vous pour votre aide

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

Discussions similaires

  1. besoin d'aide pour un script shell extrayant les données d'un fichier texte ou un fichier log
    Par haithem20080 dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 15/03/2010, 14h10
  2. Lister les sous repertoires et les fichiers d'un dossier
    Par benito9253 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/08/2009, 20h49
  3. aide script shell
    Par ach152 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 10/06/2008, 21h14
  4. Aide script shell unix, creation utilisateur
    Par jazzparadise dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/05/2007, 12h25
  5. Script shell pour tester si un répertoire est vide ou pas
    Par Ito dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 04/10/2006, 17h44

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