Votre espace a été migré vers le nouveau wiki le 21/08/2023 : https://wiki.univ-lorraine.fr/wiki/perso/view/zimmerm15
Les modifications apportées ici depuis cette date ne seront pas reportées. Le wikidocs disparaitra définitivement le 31/01/2024.

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