Cela fonctionne avec des noms de fichiers contenant des espaces ou des caractères inhabituels, et ls
peut trier tous les fichiers :
find . -name *foo* -print0 | xargs -0 ls -lah
-print0
signifie que des noms de fichiers tels que file foo 1
seront renvoyés par find
suivi de null. L'argument "-0" pour xargs
lui indique d'attendre ce type d'entrée, de sorte que les noms de fichiers contenant des espaces sont correctement envoyés à la commande ls
.
La construction avec xargs
est à certains égards meilleure que find etc -exec ls {} +
parce que tous les noms de fichiers sont envoyés à ls
en une seule fois, donc si vous voulez les trier tous par horodatage (en utilisant ls
), quelque chose comme cela fonctionne :
find . -iname *pdf -print0 | xargs -0 ls -ltr
Sur un système NetBSD, "-printx" est également une option (cela me semble être un argument utile, mais peu importe, nous avons xargs -0 et c'est correct) :
find . -name *foo* -printx | xargs ls -lah` # pas pour Ubuntu