Bonjour à tous ! J'ai une question sûrement basique, mais je n'ai pas réussi à trouver la réponse avec Google (je vous promets, j'ai cherché). Voilà le problème : pour rapatrier des fichiers de Windows, j'utilise la commande cp, c'est plus rapide que de cliquer un par un sur chaque fichier. Si je veux tout copier, je fais un cp *, ça marche même avec les fichiers dont le nom comporte un espace. Mais je n'arrive pas à être plus sélectif.
Je vais prendre un exemple concret (je m'entraîne avec). Mettons que j'ai les fichiers 'truc 2011', 'truc 2012', 'machin 2011', 'machin 2012', 'bidule 2012' et 'bidule 2013'. Je ne veux pas tous les copier, seulement ceux de 2012 ! (C'est concrètement le problème qui m'occupe : sélectionner les fichiers à rapatrier à partir de leur nom.) Voilà ce que j'ai essayé :
$ cp *2012 cible/
Je me doutais bien que ça ne marcherait pas à cause des espaces. Message d'erreur : cp: impossible d'évaluer «*2012»: Aucun fichier ou dossier de ce type.
$ cp '*2012' cible/
Pas mieux (et même message d'erreur). Pourtant je trouvais ça logique : l'espace est entre guillemets, donc il appartient au nom de fichier. Ou alors :
$ cp '* 2012' cible/
Toujours pas ! En lisant de la doc sur le sujet, j'ai compris que c'était plus compliqué. Il m'a semblait qu'il fallait faire :
$ cp '*\ 2012' cible/
Eh bien non ! Et pareil si je remplace les simples quotes par des guillemets.
Heu... c'est possible ? Si oui c'est quoi l'astuce ?
Erratum : en fait il faut le faire avec des répertoires. J'ai parlé de fichiers pour simplifier, mais avec des fichiers, comme l'a noté dantonq, ça marche.
Oups, je me suis mal expliqué, il s'agit en fait de copier des répertoires. Comme je n'y arrivais pas avec les répertoires, j'ai cru que ça ne marchait pas non plus avec les fichiers aussi j'ai donné un exemple avec des fichiers, mais en réalité je l'ai fait avec des répertoires. (Effectivement ça marche avec des fichiers.)
Donc voici ce que je veux : j'ai des répertoires qui portent des noms du type 'truc 2012' et je veux en déplacer certains dans un répertoire cible. Je viens d'essayer en créant des répertoires bidons et en les remplissant avec des fichiers bidons, tout ce que j'ai décrit plus haut ne marche pas (avec cp -r bien sûr).
OK, je précise. J'ai un répertoire 'test' dans lequel j'ai créé des répertoires bidons avec des fichiers vides, c'est juste pour essayer. Voilà le contenu du répertoire. Le but est de copier certains répertoires dans le répertoire 'cible'.
$ cp -r *2012 cible/
cp: omission du répertoire «bidule 2012»
cp: omission du répertoire «machin 2012»
cp: omission du répertoire «truc 2012»
Et il n'y a rien dans le répertoire 'cible'.
Et c'est pareil avec par exemple
$ cp -r '* 2012' cible/
(Le but est de copier sur la partition Linux des répertoires créés autrefois sous Windows dont les noms comportent des espaces. Mais peu importe, le problème vient manifestement des espaces. Comme je n'y arrive pas et que je ne veux pas faire de bêtises, je préfère faire des tests.)
----
Re. J'ai trouvé : ce n'est pas cp -r mais cp -R ! Et là ça marche ! Le "man" ne fait pas la différence, et les cours que j'ai trouvés parlaient de l'option -r.
Et voilà que ça marche aussi avec -r ! Là je ne comprends plus (la seule explication plausible est que j'aurais oublié de taper le -r tout à l'heure, ce qui serait vraiment stupide vu le temps que j'ai passé dessus...)
(En fait il y avait aussi un problème de tirets et je sélectionnais quelque chose du genre cp -r *-2011...)
- Edité par robun 17 avril 2015 à 5:46:17
Joker * et noms avec espaces
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique