Aperçu
xargs prend l'entrée standard transmise via un pipe (|), la convertit en arguments pour une autre commande, puis l'exécute. L'option -I est utile pour exécuter une commande en remplaçant chaque ligne d'entrée par une chaîne de remplacement spécifiée, ce qui permet de traiter en toute sécurité les noms de fichiers, même s'ils contiennent des espaces ou des caractères spéciaux.
Caractéristiques principales
- Convertit les éléments d'entrée en arguments pour d'autres commandes
- Exécution flexible de commandes à l'aide de placeholders (-I)
- Traitement sécurisé des noms de fichiers contenant des espaces et des caractères spéciaux
- Prise en charge du traitement parallèle (-P)
Options principales
La commande xargs offre diverses options, mais nous présentons ici les options principales fréquemment utilisées avec l'option -I.
Placeholders et traitement de l'entrée
Contrôle de l'exécution
Commande générée :
Essayez de combiner les commandes.
Description:
`xargs` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Divers exemples d'utilisation de la commande xargs avec l'option -I.
Déplacer les fichiers trouvés vers un répertoire spécifique
find . -name "*.txt" -print0 | xargs -0 -I {} mv {} /tmp/new_dir
Trouve tous les fichiers avec l'extension '.txt' dans le répertoire courant et les déplace vers '/tmp/new_dir'. Traite en toute sécurité même si les noms de fichiers contiennent des espaces.
Modifier le contenu des fichiers contenant une chaîne spécifique
grep -l "old_text" *.txt | xargs -I {} sed -i 's/old_text/new_text/g' {}
Remplace 'old_text' par 'new_text' dans tous les fichiers '.txt' du répertoire courant. L'option -l affiche uniquement les noms de fichiers.
Supprimer les noms de fichiers contenant des espaces
find . -name "my file.txt" -print0 | xargs -0 -I {} rm {}
Supprime en toute sécurité le fichier 'my file.txt' dont le nom contient des espaces. La combinaison des options -print0 et -0 est importante.
Exécuter une commande distincte pour chaque fichier
ls *.log | xargs -I file_name echo "Processing file: file_name"
Affiche le message 'Processing file: [nom du fichier]' pour tous les fichiers '.log' du répertoire courant.
Conseils et précautions
Conseils utiles et points à considérer lors de l'utilisation de l'option xargs -I.
xargs -I vs xargs -0
Les deux options traitent les éléments d'entrée, mais de manière différente.
- -I (replace-str): Remplace chaque 'ligne' d'entrée par un placeholder. Comme les lignes sont séparées par des caractères de nouvelle ligne, des problèmes peuvent survenir si les noms de fichiers contiennent des nouvelles lignes.
- -0: Suppose que les éléments d'entrée sont séparés par des caractères NUL. L'utilisation avec 'find -print0' permet de traiter le plus sûrement les noms de fichiers contenant des espaces, des nouvelles lignes et des caractères spéciaux.
Attention lors de l'utilisation avec la commande rm
Soyez extrêmement prudent lorsque vous utilisez xargs pour exécuter la commande 'rm'. Vous pourriez accidentellement supprimer des fichiers importants. Envisagez d'abord de vérifier les commandes à exécuter à l'aide de 'echo' ou de l'option '-t', ou d'utiliser une option interactive comme 'rm -i'.
Utilisation du traitement parallèle (-P)
Lorsque vous traitez de grandes quantités de fichiers ou des tâches qui prennent beaucoup de temps, l'utilisation de l'option '-P' pour exécuter plusieurs processus simultanément peut considérablement réduire le temps de traitement. Par exemple, 'xargs -P 4' exécute 4 processus en parallèle.