Shell renommer des fichiers avec des conditions

hergo666 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une liste par exemple de fichiers :

text round01.txt
text round02.txt
text round03.txt
text round04.txt

Je voudrai les renommer à la voler par en :

round01.txt
round02.txt
round03.txt
round04.txt

Je voudrai utiliser le fait qu'il y a un espace et prendre uniquement le texte derrière.

Pour débuger j'ai fais cela :
for var in *;
do mod=$var|cut -d\  -f 2; 
echo "Variable Originale : $var";
echo "Variable Modifiée: $mod" ;
done

Sauf que $mod est toujours vide, pourquoi ?

Si je fais un echo sur :
echo mod=$var|cut -d\  -f 2
mon fichier est bien renommé comme je le veux.

J'ai aussi essayé :
export mod=$var|cut -d\  -f 2
Ca ne fonctionne pas non plus.

Au final je voulais faire cela :

for var in *;do mod=$var|cut -d\  -f 2; mv "$var" $mod ;done


Mais tant que je n'ai pas résolu le fait que $mod est vide, le renommage ne fonctionne pas.

Merci pour votre aide.

3 réponses

  1. hergo666 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    J'ai trouvé :

    for var in *;do mv "$var" "$(echo $var|cut -d\  -f 2)" ;done


    Merci ;)
    0
  2. Swiss Knight Messages postés 2257 Statut Membre 110
     
    Salut.
    T'as essayé thunar ?
    0
  3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Pas la peine de "cut" ni de "pipe", le développement des paramètres suffit :
    $ var="text round01.txt"
    
    $ echo ${var}
    text round01.txt
    
    $ echo ${var#* }
    round01.txt


    Sinon, avec "rename" (enlever le "-n" si concluant) :
    $ touch "text round01.txt"
    
    $ rename -n 's/.* //' *.txt
    text round01.txt renamed as round01.txt

    0