ls | xargs -L 1 -J FICHIER echo '[' FICHIER ']' | cat -n -L 1 signifie de traiter chaque ligne en entrée comme nombre d'argument(s) à passer à la commande (ici echo) -J FICHIER signifie qu'il faut remplacer FICHIER par l'argument dans l'expression à exécuter ATTENTION, l'option -J est une extension de xargs sur BSD. On la retrouve en tant que -i sur Linux (et sur ce dernier, {} est sa valeur par défaut en cas d'omission comme pour la commande find). De même le -L ici correspond au -l (l minuscule) du xargs de Linux. Equivalent Linux : ls | xargs -l -i echo '[' {} ']' | cat -n ou (pour faire plus proche) : ls | xargs -l1 -iFICHIER echo '[' FICHIER ']' | cat -n ATTENTION, aucun espace ne doit être inséré après -l et -i MALHEUREUSEMENT, LES APOSTROPHES OU LES GUILLEMETS NE PERMETTENT PAS DE RESOUDRE LE CAS SUIVANT : ls | xargs -L 1 -J FICHIER ls -ld "FICHIER" SI DES ESPACES APPARAISSENT DANS LES NOMS DE FICHIERS MANIPULES ! (le seul recours viable semble être de passer par l'utilisation d'un script qui considérerait que tous les arguments qu'on lui transmet ne sont que les différents mots d'un même nom de fichier) SUR LINUX, LA SITUATION EST PLUS SIMPLE PUISQUE L'EXPRESSION SUIVANTE MARCHE PARFAITEMENT BIEN : ls | xargs -i ls -ld {} par contre il faut quand même utiliser -i conjointement avec {} ===== on complique encore un peu : ls *.[hH][Tt][mM]* | xargs -t -I FICHIER sh -c 'mv "FICHIER" "$(echo "FICHIER" |tr "[A-Z]" "[a-z]")"' -t sert a afficher en "echo" les commandes qui vont etre executées ce qui paraît étrange, ce sont les enchevêtrements de guillemets MAIS si l'on part du principe que $() est évalué avant de considérer les guillemets qui l'englobent alors on peut comprendre que cela marche (et que les guillemets qui apparaissent donc à l'intérieur de $() ne sont pas mis en correspondance avec ceux qui apparaissent à l'extérieur et restent par conséquent intacts dans l'invocation de echo et de tr.)