Forum Linux.débutant faire un cp de ficher .*

Posté par  .
Étiquettes : aucune
0
21
fév.
2005
Bonjour !

Oui oui cela fait plusieurs années que je suis sous linux et voila que j'ai une question de debutant :-)
comment peut-on faire une copie de tout les fichiers .* d'un repertoire vers un autre repertoire
exemple cp /home/toto/.* /home/dupond

mais cette commande ne marche pas car elle remonte dans l'arborescence des fichiers (/home)
Et puis temps qu'on y est comment on fait pour supprimer /home/toto/.* car ca marche pas non plus

Merci
  • # find ou for ... au choix

    Posté par  . Évalué à 1.

    Bonjour,
      Un première possibilité est for : for f in /home/toto/.[^.]* ; do cp -r "$f" /home/dupond/ ; done Deuxième possibilité, avec find : find /home/toto/ -maxdepth 1 -name ".?*" -exec cp -r \{\} /home/dupond/ \; La boucle for est peut être plus lisible.
        L'intérêt de find est qu'il permet facilement de se limiter aux fichiers, en excluant donc les répertoires, si on rajoute l'option "-type f".
          J'exécute cp avec l'option -r afin de pouvoir copier également les répertoires.
            J'ai pas vraiment testé, mais ça devrait à peu près fonctionner (se méfier si des fichiers ont des noms avec des espaces).
              JJD
              • [^] # Re: find ou for ... au choix

                Posté par  . Évalué à 4.

                elle sert a quoi ta boucle ?
                cp peut prendre plus de 2 parametres
                • [^] # Re: find ou for ... au choix

                  Posté par  . Évalué à 2.

                  A faire joli ?

                  Bon sèrieusement, j'ai commencé ma journée à 7heures et donc après 18 heures, je fatigue ...

                  Heureusement, les réponses suivantes étaient plus pertinentes.

                  Je je refairai plus, promis !
            1. # copie fichiers cachés

              Posté par  . Évalué à 0.

              cp ./.* /dir/

              jfba
              • [^] # Re: copie fichiers cachés

                Posté par  . Évalué à 1.

                marche pas cette commande :-) ca te copie une arborescence au dessus .
                • [^] # Re: copie fichiers cachés

                  Posté par  . Évalué à 0.

                  Chez moi, ça fait ça :

                  [jfba@myhost jfba]$ cp ./.* /tmp/KK
                  [jfba@myhost jfba]$ ls -la /tmp/KK
                  total 392
                  -rw-r--r-- 1 jfba jfba 0 fév 21 21:01 .addressbook
                  -rw------- 1 jfba jfba 2285 fév 21 21:01 .addressbook.lu
                  -rw-r--r-- 1 jfba jfba 131 fév 21 21:01 .aumixrc
                  ...
                  ...
                  -rw-r--r-- 1 jfba jfba 0 fév 21 21:01 .Xmodmap~
                  -rw-r--r-- 1 jfba jfba 415 fév 21 21:01 .xmovierc
                  -rw------- 1 jfba jfba 1873 fév 21 21:01 .xsession-errors

                  Je copie tous les .fic de mon répertoire de travail



                  jfba
                  • [^] # Re: copie fichiers cachés

                    Posté par  (site web personnel) . Évalué à 2.

                    Ben je serais curieux de savoir quel "cp" tu utilises parce que moi :

                    $ cp ./.* /tmp/KK
                    cp: omitting directory `./.'
                    cp: omitting directory `./..'
                    cp: omitting directory `./.AbiSuite'
                    ...

                    Et avec un cp -r, c'est la cata ...

                    La vraie solution, c'est plutôt

                    $ cp .[^.]* ..?* /tmp/KK
                    • [^] # Re: copie fichiers cachés

                      Posté par  . Évalué à 0.

                      La question était :
                      comment peut-on faire une copie de tout les fichiers .* ?
                      avec un exemple :
                      cp /home/toto/.* /home/dupond

                      La réponse :

                      cp ./.* /tmp/KK/

                      copie bien les fichiers dont le nom commence par un point (en ignorant les répertoires et avec les messages que tu signales)


                      De même, la 2ème question était :
                      comment on fait pour supprimer /home/toto/.* ?

                      La réponse :
                      cd /tmp/KK
                      rm -f ./.* (sans avertissement)

                      rm -- .* fait la même chose

                      supprime les fichiers copiés précédemment.
                      • [^] # Re: copie fichiers cachés

                        Posté par  . Évalué à 0.

                        J'ai oublié :

                        si rm -- .* supprime les fichiers commençant par un point

                        bien sûr,

                        cp -- .* /tmp/KK/ copie les fichiers commençant par un point

                        (voir le man rm)
            2. # faire un cp de ficher .*

              Posté par  . Évalué à 6.

              Quand j'ai le même problème, dans mon répertoire home, je fais :

              cp .??*

              Les "?" remplaçent n'importe quel caractère, mais un seul à la fois. Ca me copie donc tous les fichiers d'au moins 3 caractères commençant par un ".", mais pas les répertoires "." et "..".

              Cette commande "raterais" donc des fichiers comme ".a", ".2", mais je sais que je n'ai pas de tels fichiers, et cette commande est simple et courte.
            3. # ...

              Posté par  . Évalué à 4.

              .[^.]* est ton ami...
              • [^] # Re: ...

                Posté par  . Évalué à 2.

                Ta solution semble valide, sauf si on est vraiment strict en considérant des noms comme ...machinrc qui ont plusieurs points en-tête.
            4. # Zsh is your friend

              Posté par  . Évalué à 2.

              Bon j'arrive un peu après la bataille, mais mieux vaut tard que jamais...

              Le shell zsh gère bien mieux la chose que bash.

              Un .* est remplacé par tous les fichiers/dossiers cachés, à l'exception de . et ..

              Un * est remplacé par tous les fichiers non cachés, ou aussi ceux cachés (sans . et ..) si l'option GLOB_DOTS est mise.

            Suivre le flux des commentaires

            Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.