nom de fichier avec espaces en argument - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 07-08-2005 à 12:53:11
peut etre en faisant A="mon répertoire numéro un" et en suite cd $A
Marsh Posté le 07-08-2005 à 15:40:58
D'accord merci beaucoup.
En fait mon A vient d'une boucle for.
C'est juste syntaxiquement for A in "*" ?
Je vais essayer de suite.
Marsh Posté le 07-08-2005 à 16:23:46
Pour l'instant c'est juste un script pour tester la fonction, il ne sert pas à grand chose:
cd /home/titi/c
for i in *
do
cd $i
mkdir ok
cd /home/titi/c
done
je créé un répertoire "ok" pour vérifier qu'il a bien réussi à rentré dans le sous-répertoire du répertoire parent c
Marsh Posté le 07-08-2005 à 16:26:48
J'aurais plutôt fait :
Code :
|
Marsh Posté le 07-08-2005 à 16:26:59
cd /home/titi/c |
Marsh Posté le 07-08-2005 à 16:29:49
jlighty a écrit : J'aurais plutôt fait :
|
Il n'a pas dit qu'il voulait appliquer le script sur tous les sous répertoires. Il faudrait utiliser -maxdepth 1 avec find (et utiliser des guillemets pour les espaces )
Marsh Posté le 07-08-2005 à 17:17:46
Merci beaucoup pillow, ton script fonctionne!
Jllghty, dsl mais le tien n'arrive pas à rentrer dans les répertoires à espace.
Bon bin j'y retourne (jusqu'au prochain problème )
Marsh Posté le 07-08-2005 à 18:45:22
en faite il faut "protéger" la sortie de find
Code :
|
Marsh Posté le 07-08-2005 à 20:20:04
Non dsl, cette fois il arrive même pas à rentrer dans les répertoire sans espaces.
Mais ne te sens pas obliger de te casser la tête, j'ai une methode qui marche donc c'est ok.
Marsh Posté le 07-08-2005 à 20:53:29
Non je ne me casse pas la tête mais j'essaye simplement d'intégrer un find dans une boucle car je risque d'utiliser l'algorithme bientôt.
Bon je viens de trouver une autre solution que la boucle for
Code :
|
avec "$l" contenant le nom du répertoire.
Marsh Posté le 08-08-2005 à 22:35:39
Dsl, je débute en script. Je veux bien tester ta commande mais je n'ai pas compris comment l'intégrer dans le script. Et la variable I n'intervient pas?
Marsh Posté le 08-08-2005 à 22:43:15
En fait cette ligne remplace celle contenant "for..."
sachant qu'il ne faut pas oublier de remplacer "while read l" par "while read i" pour que ce soit en concordance avec l'ancien script.
donc : "find ./ -maxdepth 1 -type d" -> on récupère tous les dossiers contenu à la racine de notre répertoire
tail +2 : en fait dans la liste des répertoires retournés, il figure en première place le répertoire "./" qui est le répertoire courant. Si tu ne veux pas créer un repertoire ok dans le répertoire suivant alors cette commande te conviendra sinon supprime la.
while read l : on récupère les noms des dossiers un par un
Marsh Posté le 09-08-2005 à 10:54:17
OUI cette fois ça marche c'est tout bon!
Une des raisons que je n'avais pas compris c'est que j'avais lu "while read 1 ("un" ) au lieu de "I".(ils s'affichent identiquement sur sur mon écran)
En fait ta solution m'arrange même plus puisque maintenant, dans mon vrai script je suis en train de galérer sur la récursivité. Et avec find, il n'y a plus de problème!
Merci beaucoup du coup de main.
Marsh Posté le 07-08-2005 à 12:44:21
Bonjour.
J'essaye d'écrire un script, mais il bloque pour l'instant sur les fichier contenant des espace.
Un exemple, j'aimerais executer la commande suivante:
cd $A avec A=mon répertoire numérau un
Et bien ça ne marche pas! Le scripte me renvois line X... too many arguments
En temps normale dans une console on taperait cd mon\ répertoire\ numérau\ un
J'ai pensé alors utiliser sed pour insérer un "\" avant chaque espaces.
Ainsi, A contient textuellement mon\ répertoire\ numérau\ un
Mais rien n'y fait, j'ai toujours ce même message d'erreur.
J'ajoute que je ne veux surtout pas purger mes documents de leurs espace en les remplacant par des "_" ou autre chose.
Voilà.Merci pour toutes vos popositions.