Problème
Le but est de faire une copie d'une liste de fichiers venant d'un find
vers une destination utilisant le nom retourné par find
. Tout ça en utilisant xargs
plutôt que -exec
de find
.
Solution
- Utiliser
-I{}
et mettre"{}"
entre guillemets chaque fois que l'on a besoin de cet argument implicite récupéré par xargs
Exemple avec le renommage de fichiers utilisant le nom trouvé par find
# on cherche les fichiers contenant une adresse IP en début de ligne # puis on copie ce fichier dans un autre répertoire avec un nom reprenant celui # de l'argument récupéré par xargs grep -rIlZ -- "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" * | xargs -0 -I{} cp -vp "{}" "$repdest/hosts/$f-{}-hosts"
Références