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

¿Cómo mostrar la ruta completa de un archivo incluyendo el nombre completo en la terminal de Mac OSX?

‘ls’ puede mostrar el nombre del archivo, e.g

ls config.inc.php
config.inc.php

‘pwd’ mostrar la ruta completa de la carpeta actual, e.g

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

¿Hay algún comando que pueda juntarlos, podría mostrar:

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

Respuestas (8)

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

Desde aquí https://stackoverflow.com/a/4031502/804713

macports y homebrew proporcionan un paquete de coreutils que contiene 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

Hay muchas maneras de hacer eso; aquí hay un ejemplo que puede funcionar para usted:

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

Si quiere más ejemplos, hay un montón en este puesto en stackoverflow.

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

En Mac OSX, haga los siguientes pasos:

  1. cd en el directorio del archivo de destino.
  2. Escriba cualquiera de los siguientes comandos de terminal. Terminal ls "`pwd`/file.txt" echo $(pwd)/file.txt

  3. Reemplace file.txt por su nombre de archivo actual.

  4. Pulse Intro.

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

Usar realpath

Por ejemplo:

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

Respondido aquí en el desbordamiento de la pila: https://stackoverflow.com/a/3915075/441960

Para tu información, mi versión 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

No me gustó ninguna de las soluciones dadas, así que inventé la mía basada en https://stackoverflow.com/a/22684652/953327

Crear alias que simplemente es una llamada a la función que combina pwd y ls $1. Puedes entonces agregar esto a tu .bash_profile si lo deseas.

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

Ejemplo de uso:

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

Elegí lsf para “lista completa” o “archivo de lista”, tiene sentido para mí pero siéntete libre de modificarlo.


Actualizar (Gracias @santiago-arizti) Para poder usar esto con rutas relativas (por ejemplo 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

Quería más de lo que necesitaba, necesitaba poder también preguntar por los archivos en un directorio relativo, como ../../readme.md, y el resultado debería ser algo como /Users/santi/readme.md

Así que creé un script (ejecutable) en una carpeta que es parte del $PATH llamada lsf con el siguiente contenido:

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

Así que puedes usarlo así:

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

Ningún parámetro te avisa

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

El directorio falso te avisa (debido a dirname)

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

Archivo falso pero el directorio real no avisa (puedes añadir validación si lo necesitas)

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

También puede usar el comando “find” para listar todos los archivos con la ruta completa:

find DirectoryName -type f

o sólo los siguientes:

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

Lo que sigue es un archivo dentro del directorio de trabajo que coincide con file.txt y devuelve su ruta absoluta

find `pwd` -name file.txt