Comment afficher le chemin complet d'un fichier incluant le nom de fichier complet dans un terminal Mac OSX?

40

'ls' peut afficher le nom du fichier, par exemple

ls config.inc.php
config.inc.php 

'pwd' affiche le chemin complet du dossier actuel, par exemple

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Y at-il une commande peut les mettre ensemble, serait capable de montrer:

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php
Rob L
la source

Réponses:

31

À partir d'ici: https://stackoverflow.com/a/4031502/804713

macports et homebrew fournissent un paquet coreutils contenant greadlink (GNU readlink). crédit à Michael Kallweitt post sur mackb.com

brasser installer coreutils

greadlink -f fichier.txt

Stephenbez
la source
1
Cela me rendait fou. Je pensais pourquoi -fne fonctionnerait pas sur non-GNU et comment le faire fonctionner. Cela marche. Merci
sdkks
1
Notez que cela fonctionne aussi pour les annuaires
Paul Razvan Berg
20

Il y a plusieurs façons de le faire. Voici un exemple qui peut fonctionner pour vous:

claw:~ jonv$ echo `pwd`/`ls config.in.php`
/Users/jonv/config.in.php

Si vous voulez plus d'exemples, il y en a beaucoup sur ce post à stackoverflow.

Yoonix
la source
1
La plupart des bonnes réponses sur stackoverflow.com/questions/5265702/ ... ne fonctionnent pas prêtes à l' emploi sous OS X, cependant.
Quentin Pradet
9

Sous Mac OSX, procédez comme suit:

  1. cd dans le répertoire du fichier cible.
  2. Tapez l'une des commandes de terminal suivantes.
Terminal
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. Remplacez-le file.txtpar votre nom de fichier actuel.
  2. Appuyez sur Enter.
Mowzer
la source
2

Vous pouvez également utiliser la commande "find" pour lister tous les fichiers avec le chemin complet:

find DirectoryName -type f

ou juste ce qui suit:

find . -type f
Mireia
la source
1
Cela ne renvoie pas le chemin absolu (ce qui semble être ce que cherchait OP)
Annonce n °
2

N'aimant aucune des solutions proposées, j'ai donc créé ma propre base à partir de https://stackoverflow.com/a/22684652/953327.

Créez un alias qui est simplement un appel de fonction qui combine pwdet ls $1. Vous pouvez ensuite l'ajouter à votre .bash_profilechoix.

alias lsf='function _lsf(){ echo "$(pwd)/$(ls $1)"; };_lsf'

Exemple d'utilisation:

lsf registry.lock
-> /tmp/registry.lock

J'ai choisi lsfpour "liste complète" ou "liste de fichiers", cela a du sens pour moi mais je vous invite à le modifier.


Mise à jour (Merci @ santiago-arizti) Pour pouvoir utiliser ceci avec des chemins relatifs (par exemple lsf ../../readme.md)

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
FGreg
la source
J'avais besoin d'appeler j'aime ça lsf ../../readme.md, j'ai donc modifié un peu ta versionalias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
santiago arizti
J'espère que ça ne vous dérange pas, j'ai ajouté ma propre réponse mais avec un script dans un répertoire $ PATH au lieu d'un aliase
santiago arizti
2

Je voulais plus que ce dont vous aviez besoin, je devais aussi pouvoir poser des questions sur les fichiers dans un répertoire relatif, comme ../../readme.md, et le résultat devrait être quelque chose comme:/Users/santi/readme.md

J'ai donc créé un script (exécutable) dans un dossier faisant partie de l' $PATHappelé lsfavec le contenu suivant:

#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )

Donc, vous pouvez l'utiliser comme ça:

santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md 
/Users/santi/p/readme.md

Aucun paramètre ne vous avertit

santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md

Un faux répertoire vous avertit (à cause de dirname)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory

Faux fichier mais le répertoire réel ne prévient pas (vous pouvez ajouter une validation si vous en avez besoin)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md 
/Users/santi/p/fakefile.md
santiago arizti
la source
1

Ce qui suit trouvera un fichier dans le répertoire de travail qui correspond file.txtet renverra son chemin absolu

find `pwd` -name file.txt
marque
la source
Parfait. 654321
Jan Kyu Peblik
1

Utilisation realpath

Par exemple:

$ realpath README.md 
/Users/joe/my/long/directory/structure/README.md

Répondu ici sur stackoverflow: https://stackoverflow.com/a/3915075/441960

Pour info, ma version de MacOS (OSX):

$ uname -a
Darwin my-machine 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64
Purple Jacket
la source