Si vous donnez à la commande find un chemin absolu, elle crachera les résultats avec un chemin absolu. Donc, à partir du répertoire Ken si vous deviez taper:
find /home/ken/foo/ -name bar -print
(au lieu du chemin relatif find . -name bar -print
)
Tu devrais obtenir:
/home/ken/foo/bar
Par conséquent, si vous voulez un ls -l
et qu'il renvoie le chemin absolu, vous pouvez simplement dire à la commande find d'exécuter un ls -l
sur ce qu'il trouve.
find /home/ken/foo -name bar -exec ls -l {} ;\
REMARQUE: il y a un espace entre {}
et;
Vous obtiendrez quelque chose comme ceci:
-rw-r--r-- 1 ken admin 181 Jan 27 15:49 /home/ken/foo/bar
Si vous n'êtes pas sûr de l'emplacement du fichier, vous pouvez toujours modifier l'emplacement de recherche. Tant que le chemin de recherche commence par "/", vous obtiendrez un chemin absolu en retour. Si vous recherchez un emplacement (comme /) où vous allez obtenir beaucoup d'erreurs d'autorisation refusée, je recommanderais de rediriger l'erreur standard afin que vous puissiez réellement voir les résultats de la recherche:
find / -name bar -exec ls -l {} ;\ 2> /dev/null
( 2>
est la syntaxe pour les shells Borne et Bash, mais ne fonctionnera pas avec le shell C. Cela peut aussi fonctionner dans d'autres shells, mais je sais seulement avec certitude que cela fonctionne dans Bourne et Bash).
find /home/ken/foo/bar -exec ls -ld $PWD/{} \;