205 votes

Trouver et copier des fichiers

Pourquoi ne pas copier les fichiers vers le dossier de destination?

# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} \;

cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'

417voto

malcolmpdx Points 771

Si votre intention est de copier les fichiers trouvés dans /home/shantanu/tosend vous avez l'ordre des arguments de cp inversée:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend  \;

49voto

Thiyagu ATR Points 442

j'ai fait face à un problème, quelque chose comme ça...

En fait,dans les deux façons que vous pouvez traiter find commande de sortie en copy commande

1.Si find sortie de la commande ne contient pas d'espace je.e si le nom de fichier de la dose contient pas d'espace init, alors vous pouvez utiliser mentionnées ci-dessous de commande:

Syntax:
    find <Path> <Conditions> | xargs cp -t <copy file path>
Example:
     find -mtime -1 -type f | xargs cp -t inner/

2.Mais la plupart du temps, notre porduction fichiers de données peut contenir de l'espace init.Donc la plupart du temps ci-dessous, la commande est efficace

Syntax:
   find <path> <condition> -exec cp '{}' <copy path> \;

Example 
   find -mtime -1 -type f -exec cp '{}' inner/ \;

Dans le deuxième exemple,la dernière partie je.e semi-colon est également considérée comme faisant partie de l' find de commande, qui devrait être échappé avant d'appuyer sur le bouton enter.Sinon vous aurez une erreur à quelque chose comme ceci

find: missing argument to `-exec'

***Dans votre cas **copie de la syntaxe de commande est mauvais pour la copie de trouver le fichier en /home/shantanu/tosend.Ci-dessous, la commande fonctionne...

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp  {} /home/shantanu/tosend \;

9voto

Vous devez utiliser cp -t /home/shantanu/tosend afin de lui indiquer que l'argument est le répertoire de destination, et non pas une source. Vous pouvez ensuite modifier -exec ... + afin d'obtenir de l' cp à copier autant de fichiers que possible à la fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X