Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2010, 18h02   #1
Membre du Club
 
Avatar de floanne
 
Inscription : février 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : février 2006
Messages : 167
Points : 45
Points : 45
Par défaut mv ignorer l'erreur

Bonjour.

Je fais un mv qui ressemble à ça :
Quand il y a des fichiers qui commencent par "toto" : aucun problème ça fait ce que je veux. Par contre si il n'y en a pas ça me retourne :
Code :
mv: cannot stat `toto*': No such file or directory
J'aimerais ignorer ce message pour qu'il ne bloque pas mon script...

Merci de vos réponses,
Florent.
floanne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 18h38   #2
Membre éclairé
 
Homme Lilian Herault
Architecte technique
Inscription : juin 2010
Messages : 215
Détails du profil
Informations personnelles :
Nom : Homme Lilian Herault
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : Industrie

Informations forums :
Inscription : juin 2010
Messages : 215
Points : 335
Points : 335
Bonjour,

Avant d'exécuter le mv, tu peux vérifier s'il existe bien des fichiers qui portent ce nom.

Lilian.
lilian_h est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2010, 18h42   #3
Membre du Club
 
Avatar de floanne
 
Inscription : février 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : février 2006
Messages : 167
Points : 45
Points : 45
Bonjour.

Merci de ta réponse mais j'ai tester pour compter le nombre de fichier. Mais j'ai la même erreur avec le ls
avec un -f l'étoile ne marche pas...


Merci, Florent.
floanne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 18h46   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 516
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 516
Points : 7 710
Points : 7 710
suffit de tester la presence des fichier toto* avant de les déplacer.
exemple :
Code :
1
2
3
4
5
6
7
/tmp
$ touch TOTO
$ [[ -f TOTO ]] && mv TOTO 1/ || echo "Pas de TOTO"
$ [[ -f TOTO ]] && mv TOTO 1/ || echo "Pas de TOTO"
Pas de TOTO
$ rm 1/TOTO
$
man ksh (ou bash selon ton shell préféré) te donnera la liste des tests disponibles (comme les fichiers de tailles zéro ; est un fichier ; est un repertoire ; a certains droits etc....)

bien sur la balise "sinon" (le double pipe) n'est pas obligatoire tu peux ne pas l'utiliser

ou tu peux faire simplement une redirection du message derreur dans rien

comme ça

Code :
mv TOTO destination/ 2> /dev/null
ça provoque l'erreur mais n'affiche pas le message néanmoins c''est idiot puisque la commande est lancée quand même contrairement à la méthode du test de présence du/des fichier(s)
frp31 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2010, 20h55   #5
Membre du Club
 
Avatar de floanne
 
Inscription : février 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : février 2006
Messages : 167
Points : 45
Points : 45
Ok merci.

La première solution ne marche pas dans mon cas il me semble : mes fichiers se nomment toto_quelque_chose. Je ne connais pas le nom exact... et j'ai essayé de faire un -f toto* mais ça ne marchait pas...

Sinon la deuxième solution est peut-être la bonne : je testerai demain...

Merci beaucoup
Florent.
floanne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 22h09   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 516
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 516
Points : 7 710
Points : 7 710
exemple complet utilisant une expression simple avec *

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$ touch nata niti nono nutu nyty
$ ls
nata             niti             nono             nutu             nyty
$ find . -type f -name "n*" > liste_a_traiter       
$ while read ligne                                  
> do
> mv $ligne $(echo $ligne|sed "s/n/t/")             
> done < liste_a_traiter && rm liste_a_traiter      
$ ls
tata titi tono tutu tyty
$

bien sur si tu n'as qu'un repertoire unique à modifier tu peux simplifier en simple sequence :
Code :
1
2
3
4
5
$ ls
tata titi tono tutu tyty
$ for i in t* ; do mv $i $(echo $i|sed "s/t/n/") ; done
$ ls
nata niti nono nutu nyty
frp31 est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 17/11/2010, 10h48   #7
Membre du Club
 
Avatar de floanne
 
Inscription : février 2006
Messages : 167
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : février 2006
Messages : 167
Points : 45
Points : 45
Merci pour toutes les réponses.

Au final je me suis servi de la redirection des erreurs dans le répertoire null.

Encore merci, Florent.
floanne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h43.


 
 
 
 
Partenaires

Hébergement Web