63 votes

Obtenir le chemin absolu des fichiers en utilisant la commande 'find'.

Existe-t-il un moyen d'obtenir le chemin absolu d'un fichier qui fait l'objet d'une recherche ?

Par exemple :

find .. -name "filename"

Cela me donne des résultats comme ../filename mais je veux le chemin complet.

Ce dont j'ai besoin est de trouver dans le répertoire parent et ses enfants, un fichier spécifique, que j'utiliserai dans un autre script plus tard.

Merci

46voto

dessert Points 36815

Vous pouvez utiliser bash L'expansion de Tilde pour obtenir le chemin absolu du répertoire de travail actuel, de cette façon find imprime également le chemin absolu pour les résultats :

find ~+ -type f -name "filename"

Si elle est exécutée dans ~/Desktop ce qui donne

find /home/yourusername/Desktop -type f -name "filename"

et imprime des résultats comme :

/home/yourusername/Desktop/filename

Si vous voulez utiliser cette approche avec le répertoire de travail actuel de parent vous devez cd avant d'appeler find :

cd .. && find ~+ -type f -name "filename"

29voto

Scrutinizer Points 529

Essayez quelque chose comme :

find "$(cd ..; pwd)" -name "filename"

22voto

Sylvain Pineau Points 59212

Essayez d'utiliser le -exec option de find :

find .. -name "filename" -exec readlink -f {} \;

Note : readlink imprime la valeur d'un lien symbolique ou d'un nom de fichier canonique.

18voto

Vivek Points 289

Le moyen le plus simple est

find "$(pwd -P)" -name "filename"

6voto

Wyrmwood Points 158

Cela a fonctionné pour moi, mais ne renverra que la première occurrence.

realpath $(find . -type f -name filename -print -quit)

Pour obtenir les chemins complets pour toutes les occurrences (comme suggéré par Sergiy Kolodyazhnyy)

find . -type f -name filename -print0 | xargs -0 realpath

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X