Boucle pour suppression d'une partie du nom de fichier

Résolu/Fermé
dr-mraycha Messages postés 10 Date d'inscription mardi 3 juin 2014 Statut Membre Dernière intervention 7 juin 2014 - Modifié par jipicy le 4/06/2014 à 08:02
dr-mraycha Messages postés 10 Date d'inscription mardi 3 juin 2014 Statut Membre Dernière intervention 7 juin 2014 - 7 juin 2014 à 01:23
bonjour mesdames et messieurs les amateurs des systèmes UNIX. j'ai besoin d'un petit coup de main s'il vous plaît, même si le problème peut paraître banal mais ça me casse vraiment la tête.
voilà depuis un moment je veux renommer des fichiers musicaux qui commencent par des numéro, par exemple : << 02. Can't Remember to Forget You (feat. Rihanna).mp3 >> en utilisant une boucle << for >> mais je n'arrive pas sachant que j'ai utilisé plusieurs méthodes et les commandes cp et mv. je vous passe le code que j'ai pu créer jusqu'à maintenant :

#!/bin/bash

  nbligne='ls -l [0-9][0-9].* |wc -l'

  for i in 'seq 1 $nbligne'; do

    titre='head -n $i fichier | tail -1';

    if [ $i -le 9 ]
    then

      x='ls 0$i.*|cut -c -4';
      echo $x;
      echo $titre vers ${titre#$x};
      cp "'$titre'" "'${titre#$x}'";

    else 
      x='ls $i.*|cut -c -4'
      echo $x
      echo $titre vers ${titre#$x};
      cp "'$titre'" "'${titre#$x}'";
    fi
  done


le message d'erreurs c'est ça :
cp: impossible d'évaluer «'02. Can't Remember to Forget You (feat. Rihanna).mp3'»: Aucun fichier ou dossier de ce type.
merci d'avance de votre aide
A voir également:

3 réponses

salut,

déjà, n'utilise pas
ls
pour autre chose qu'afficher les fichiers, sinon c'est pénible d'en extraire des données exploitables. :(
de plus, c'est le shell qui effectue le développement de
[0-9][0-9].*
, donc :
for f in [0-9][0-9].*
do
echo cp "$f" "${f#*. }" # si ça affiche ce que tu veux, enlève le 'echo'
done
fini !

mais, utiliser
rename
ne serait-il pas plus pratique ?
0
dr-mraycha Messages postés 10 Date d'inscription mardi 3 juin 2014 Statut Membre Dernière intervention 7 juin 2014
4 juin 2014 à 13:44
merci Q pour tes explications mais le problème et toujours le même. le message d'erreur est :
mv: la cible «La).mp3» n'est pas un répertoire
mv: la cible «Rihanna).mp3» n'est pas un répertoire
mv: la cible «Empire.mp3» n'est pas un répertoire
mv: la cible «Me.mp3» n'est pas un répertoire
mv: la cible «MAGIC!).mp3» n'est pas un répertoire
mv: la cible «Spotlight.mp3» n'est pas un répertoire
mv: la cible «Record.mp3» n'est pas un répertoire
mv: la cible «Shelton).mp3» n'est pas un répertoire
mv: la cible «23.mp3» n'est pas un répertoire
mv: la cible «Thing.mp3» n'est pas un répertoire
mv: la cible «olvidarte.mp3» n'est pas un répertoire
mv: la cible «ti.mp3» n'est pas un répertoire
mv: la cible «La.mp3» n'est pas un répertoire
mv: la cible «Shadows.mp3» n'est pas un répertoire
0
Utilisateur anonyme
4 juin 2014 à 14:45
affiche le code que tu utilises.
0
dr-mraycha Messages postés 10 Date d'inscription mardi 3 juin 2014 Statut Membre Dernière intervention 7 juin 2014
4 juin 2014 à 18:28
le même que tu m'as proposé. ça marche avec "echo" j'ai le nom qui s'affiche sans le numero mais quand j'enlève "echo" pour renommer les fichiers il me sort le message d'erreur que j'ai écrit au dessus.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 juin 2014 à 14:11
hello
montre un exemple, le nom avant, le nom après
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
4 juin 2014 à 14:44
Salut,

Un exemple est donné dans le post initial :
exemple : << 02. Can't Remember to Forget You (feat. Rihanna).mp3 >> 

La syntaxe donnée par qcqcpQ devrait fonctionner (et fonctionne d'ailleurs).
C'est sûrement une erreur ailleurs dans le script de notre ami ;-\

La remarque faite par qcqcpQ concernant la commande
rename
est d'autant plus pertinente que c'est la meilleur façon de procéder ;-)
0
dr-mraycha Messages postés 10 Date d'inscription mardi 3 juin 2014 Statut Membre Dernière intervention 7 juin 2014
4 juin 2014 à 18:43
essayez de créer plusieurs fichiers texte par exemple et renommer les 01.fichier.txt 02.fichier.txt 03.fichier.txt et essayer le code précèdent et si ça marche pour vous je crois que je devrais installer un autre système ou bien tout simplement me pendre :D rename est une commande du DOS et quand je la mets au lieu de mv ou de cp dans le script c'est b beaucoup plus compliqué.
une partie du resultat avec rename: (j'ai rajouté echo $f au script pour m'assurer que f reçoit le nom du fichier et pas autre chose )

01. Dare (La La La).mp3
syntax error at (eval 1) line 1, at EOF
02. Can't Remember to Forget You (feat. Rihanna).mp3
syntax error at (eval 1) line 1, at EOF
03. Empire.mp3
syntax error at (eval 1) line 1, at EOF
04. You Don't Care About Me.mp3
syntax error at (eval 1) line 1, at EOF
05. Cut Me Deep (feat. MAGIC!).mp3
syntax error at (eval 1) line 1, at EOF
06. Spotlight.mp3
syntax error at (eval 1) line 1, at EOF
07. Broken Record.mp3
syntax error at (eval 1) line 1, at EOF
08. Medicine (feat. Blake Shelton).mp3
Illegal octal digit '8' at (eval 1) line 1, at end of line
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
4 juin 2014 à 19:21
$ ls -1
01. Dare (La La La).mp3
02. Can't Remember to Forget You (feat. Rihanna).mp3
03. Empire.mp3
04. You Don't Care About Me.mp3
05. Cut Me Deep (feat. MAGIC!).mp3
06. Spotlight.mp3
07. Broken Record.mp3
08. Medicine (feat. Blake Shelton).mp3

$ rename 's/^[0-9][0-9]*\. *//' *

$ ls -1
Broken Record.mp3
Can't Remember to Forget You (feat. Rihanna).mp3
Cut Me Deep (feat. MAGIC!).mp3
Dare (La La La).mp3
Empire.mp3
Medicine (feat. Blake Shelton).mp3
Spotlight.mp3
You Don't Care About Me.mp3
0
dr-mraycha Messages postés 10 Date d'inscription mardi 3 juin 2014 Statut Membre Dernière intervention 7 juin 2014
4 juin 2014 à 21:10
désolé zipe et merci de votre aide mais ça n'a pas marché encore une fois. je crois qu'il y a une mise à jour à faire ou quoi que ce soit

Commande Ms-Dos éxécutée, équivalence linux mv
mv: la cible «08. Medicine (feat. Blake Shelton).mp3» n'est pas un répertoire
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
5 juin 2014 à 08:25
mettre les noms entre ""
0
dr-mraycha Messages postés 10 Date d'inscription mardi 3 juin 2014 Statut Membre Dernière intervention 7 juin 2014
7 juin 2014 à 01:23
j'ai de bonnes nouvelles par rapport à ce problème :D et bien par coïncidence j'ai installé l'environnement xfce et j'ai fait un upgrade de tout le système et d'un coup je me balader dans le menu et j'ai trouver un outil nommé "renommer fichiers en masse" (son vrai nom c'est Thunar) qui s'est avéré très utile :D merci à dubcek, zipe et Q pour votre aide.
voici le lien pour l'avoir https://www.xfce.org/
0