Rename de fichiers sous Linux
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Rename de fichiers sous Linux



  1. #1
    invite70eda27f

    Rename de fichiers sous Linux


    ------

    Salut @ tous

    Savez-vous comment renommer un ensemble de fichiers sous les noms 01.dat; 02.dat... etc en Linux.

    Merci

    -----

  2. #2
    invite765732342432
    Invité

    Re : Rename de fichiers sous Linux

    Citation Envoyé par dimofzion Voir le message
    Savez-vous comment renommer un ensemble de fichiers sous les noms 01.dat; 02.dat... etc en Linux.
    Essaye cette commande dans un répertoire qui ne contient que les fichiers que tu veux renommer:
    rename 's//0/' *.dat

    PS: essaye de ne pas créer un fil à chaque problème...

  3. #3
    invite70eda27f

    Re : Rename de fichiers sous Linux

    Il me repond : # manquant, abort...

    (desole pour le spamage)

  4. #4
    invite765732342432
    Invité

    Re : Rename de fichiers sous Linux

    Citation Envoyé par dimofzion Voir le message
    Il me repond : # manquant, abort...
    (desole pour le spamage)
    Euh... Tu utilises quel Linux ? et si tu le sais, quel shell (bash, sh, ...) ?
    J'ai testé avec bash et sh, ça marche nickel...

    J'y pense: ma commande ne fait que rajouter un '0' au début des fichiers: vu que tu m'as dit qu'ils s'appelaient 1.dat, etc... Il ne renomme pas n'importe quel fichier.

    Quels sont les noms des fichiers que tu veux renommer ? Essaye de donner un maximum d'exemples, sinon on ne va jamais y arriver...

  5. A voir en vidéo sur Futura
  6. #5
    invite4ad25ccf

    Re : Rename de fichiers sous Linux

    un petit script fait en 2-2 :

    Code:
    #!/bin/bash
    i=1
    for file in `ls $1/*.$2`
    do
        mv $file "$i.$2"
        i=`echo $i | sed -e "s/^0+//"`
        i=$((i+1))
        if [ $i -le 9 ]
        then
            i="0$i"
        fi
    done
    tu copies ca dans le fichier rename.sh ensuite un petit "chmod +x rename.sh" et un ./rename.sh <rep> <ext> pour lancer ton script.

    Exemple :
    ./rename /home/Towl/titi dat


    Y a surement beaucoup plus propre, mais flemme de me creuser la tete à faire joli

  7. #6
    invite4ad25ccf

    Re : Rename de fichiers sous Linux

    Hum.. comme quoi faut toujours se relire et tester
    i=`echo $i | sed -e "s/^0+//"` --> i=`echo $i | sed -e "s/^0*//"`
    i=$((i+1)) --> i=$(($i+1))

    Edit:
    Et si tu veux pas des 0 avant :
    Code:
    #!/bin/bash
    i=1
    for file in `ls $1/*.$2`
    do
        mv $file "$i.$2"
        i=$(($i+1))
    done

  8. #7
    invite70eda27f

    Re : Rename de fichiers sous Linux

    Spuer merci je vais essayer ca. Pour repondre a Faith, j'utilise Ubuntu, je ne sais pas comment s'appelle son shell mais c'est le terminal classique quoi...

    En tout cas merci pour vos reponses !

  9. #8
    invite765732342432
    Invité

    Re : Rename de fichiers sous Linux

    Citation Envoyé par dimofzion Voir le message
    Spuer merci je vais essayer ca. Pour repondre a Faith, j'utilise Ubuntu, je ne sais pas comment s'appelle son shell mais c'est le terminal classique quoi...

    En tout cas merci pour vos reponses !
    C'est un bash par défaut.
    Pour le script donné par Towl: Attention: je n'ai pas l'impression qu'il conservera tes fichiers dans l'ordre que tu souhaites (si j'ai bien compris ton problème) => c'est pour ça que je t'ai filé cette "rustine" un peu plus haut.

  10. #9
    invite70eda27f

    Re : Rename de fichiers sous Linux

    Pour repondre a ta question je suis stagiaire dans un centre de recherche mais je n'ai fait au'une petite annee de C++ version physique donc je ne connais helas pas grand chose en manipulation de fichiers et du shell.

    Est-ce que tu saurais comment ecrire une partie du titre d'un fichier dans le fichier lui-meme ?

    Par exemple, comment faire ecrire dans tototiti.dat titi en premiere ligne et toto en deuxieme ?
    Merci

  11. #10
    invite4ad25ccf

    Re : Rename de fichiers sous Linux

    Pour le script donné par Towl: Attention: je n'ai pas l'impression qu'il conservera tes fichiers dans l'ordre que tu souhaites (si j'ai bien compris ton problème) => c'est pour ça que je t'ai filé cette "rustine" un peu plus haut.
    D'apres ce que j'ai compris l'ordre n'importait pas. La il est classes par ordre alphabétique (ordre classique du ls).

    Est-ce que tu saurais comment ecrire une partie du titre d'un fichier dans le fichier lui-meme ?

    Par exemple, comment faire ecrire dans tototiti.dat titi en premiere ligne et toto en deuxieme ?

    Un petit code qui le fait (en partant du principe que le fichier contienne un séparateur (toto_titi.dat par exemple).
    Code:
    #!/bin/bash
    
    ext=$1
    separator=$2
    
    for file in `ls *.$ext`
    do
    	echo $separator $ext
    	part1=`echo $file | cut -d "$separator" -f 1`
    	part2=`echo $file | sed -r "s/^${part1}${separator}(.*)\.$ext/\1/"`
    	echo $part1  $part2
    	echo -e "${part1}\n${part2}" > tmp
    	cat $file >> tmp
    	mv tmp $file
    done
    Il s'appelle sous la forme './monscript dat _' pour ajouter les deux lignes à tous les fichiers .dat avec comme séparateur _

    Pareil, y a surement beaucoup plus propre.

    Je te laisse etudier ces deux script pour que tu puisse voir un peu les commandes unix principale et ainsi te faire tes propres scripts

  12. #11
    invite765732342432
    Invité

    Re : Rename de fichiers sous Linux

    Citation Envoyé par Towl Voir le message
    D'apres ce que j'ai compris l'ordre n'importait pas. La il est classes par ordre alphabétique (ordre classique du ls).
    Quand j'avais posé la question sur les fichiers 1.dat, 2.dat, ... l'ordre avait l'air important.
    Et le "risque" de ton script (qui est très bon, et que je réutiliserai probablement) est de placer le 10.dat avant le 1.dat et le 2.dat !

  13. #12
    invite4ad25ccf

    Re : Rename de fichiers sous Linux

    Si tu souhaite mettre le 2.dat avant le 10.dat en traitement pré script (en gros que le script conserve l'ordre numérique), tu peux le faire avec un peu d'awk et de sort :
    ls -l $1/*.$2 | awk '{print $9}' | sort -n

    A utiliser à la place du ls $1/*.$2

    En gros : selection de la 9eme colonne (awk est mieux que cut pour les séparation en colone sur les caracteres blancs), et tri numérique

Discussions similaires

  1. Son à sous-volume sous Linux
    Par invite70eda27f dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 12/11/2007, 22h03
  2. transfert fichiers entre pc windows et linux
    Par invite58549cb8 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 31/10/2007, 08h42
  3. vlan sous linux
    Par invite44f7c4c0 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 30/12/2006, 02h11
  4. rename générique sous windows
    Par inviteb77375f9 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 14/02/2006, 13h36
  5. C++ sous linux ??
    Par invite8e6b42f1 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 06/12/2005, 13h50
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...