je faisais face à un problème quelque chose comme ça ...
En fait, de deux façons vous pouvez traiter la sortie find
de commande dans copy
commande
Si la sortie de la commande find
ne contient aucun-à-dire de l'espace Si le nom du fichier ne contient pas d'espace, vous pouvez utiliser la commande mentionnée ci-dessous:
Syntaxe: find <Path> <Conditions> | xargs cp -t <copy file path>
Exemple: find -mtime -1 -type f | xargs cp -t inner/
Mais la plupart du temps, nos fichiers de données de production peuvent contenir de l'espace. Ainsi, la plupart du temps commande mentionnés ci-dessous est plus sûr:
Syntaxe: find <path> <condition> -exec cp '{}' <copy path> \;
Exemple find -mtime -1 -type f -exec cp '{}' inner/ \;
Dans le deuxième exemple, la dernière partie iE point-virgule est également considérée comme faisant partie de commandement find
, cela devrait être échappé avant d'appuyer sur le bouton d'entrée. Sinon, vous obtiendrez une erreur quelque chose comme ça
find: missing argument to `-exec'
Dans votre cas, syntaxe de commande de copie est erroné afin de copier le fichier trouver dans /home/shantanu/tosend
. La commande suivante fonctionnera:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;
Quel est le but de '\;'? – Astrid
@Astrid vérifier [this] (http://unix.stackexchange.com/questions/12902/how-to-run-find-exec) – shellbye
Ahh je vois @shellbye - merci – Astrid