2014-02-15 00:30:37 +0000 2014-02-15 00:30:37 +0000
43
43

Comment afficher le chemin complet d'un fichier, y compris le nom complet du fichier dans le terminal Mac OSX ?

‘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

Est-ce qu'une commande peut les rassembler, serait capable d'afficher :

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php

Réponses (8)

31
31
31
2015-09-18 19:36:53 +0000

De là https://stackoverflow.com/a/4031502/804713

macports et homebrew fournissent un paquet coreutils contenant greadlink (GNU readlink). credit to Michael Kallweitt post in mackb.com

brew install coreutils

greadlink -f file.txt

20
20
20
2014-02-15 00:55:03 +0000

Il existe de nombreuses façons de le faire ; voici un exemple qui pourrait vous convenir :

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

Si vous voulez d'autres exemples, il y en a un tas sur this post at stackoverflow.

9
9
9
2016-03-24 06:12:55 +0000

Sous Mac OSX, effectuez les étapes suivantes :

  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

  3. Remplacez file.txt par votre nom de fichier actuel.

  4. Appuyez sur la touche Entrée.

3
3
3
2019-10-17 22:23:18 +0000

Utilisez realpath

Par exemple :

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

Réponses ici sur le débordement de la pile : https://stackoverflow.com/a/3915075/441960

FYI, 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
3
3
3
2019-01-25 01:03:16 +0000

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

Create alias, qui est simplement un appel de fonction combinant pwd et ls $1. Vous pouvez ensuite l'ajouter à votre .bash_profile si vous le souhaitez.

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

Exemple d'utilisation :

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

J'ai choisi lsf pour “liste complète” ou “fichier liste”, cela me paraît logique mais n'hésitez pas à 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'
2
2
2
2019-07-26 22:18:13 +0000

Je voulais plus que ce dont vous aviez besoin, j'avais besoin de pouvoir aussi 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 répertoire qui fait partie de $PATH appelé lsf avec le contenu suivant :

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

Donc vous pouvez l'utiliser comme ceci :

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

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 vrai répertoire ne vous avertit pas (vous pouvez ajouter une validation si vous le souhaitez)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md 
/Users/santi/p/fakefile.md
2
2
2
2018-01-22 10:07:23 +0000

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

find DirectoryName -type f

ou seulement les suivants :

find . -type f
1
1
1
2019-02-07 00:12:06 +0000

Les éléments suivants trouveront un fichier dans le répertoire de travail qui correspond à file.txt et renverront son chemin absolu

find `pwd` -name file.txt