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

Como mostrar o caminho completo de um ficheiro incluindo o nome completo do ficheiro no terminal Mac OSX?

‘ls’ pode mostrar o nome do ficheiro, e.g.

ls config.inc.php
config.inc.php

‘pwd’ mostrar o caminho completo da pasta actual, e.g.

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Existe um comando que os possa juntar, seria capaz de mostrar:

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

Respostas (8)

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

A partir daqui https://stackoverflow.com/a/4031502/804713

macports and homebrew provide a coreutils package containing 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

Há muitas maneiras de fazer isso; aqui está um exemplo que pode funcionar para si:

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

Se quiser mais exemplos, há um monte de este poste em stackoverflow.

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

No Mac OSX, faça os seguintes passos:

  1. cd para o directório do ficheiro de destino.
  2. Digite um dos seguintes comandos terminais. Terminal ls "`pwd`/file.txt" echo $(pwd)/file.txt

  3. Substitua file.txt pelo seu verdadeiro nome de ficheiro.

  4. Prima Enter.

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

Use realpath

Por exemplo:

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

Respondido aqui em stackoverflow: https://stackoverflow.com/a/3915075/441960

FYI, a minha versão do 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ão gostei de nenhuma das soluções dadas, por isso inventei a minha própria base de https://stackoverflow.com/a/22684652/953327

Criar alias que é simplesmente uma chamada de função que combina pwd e ls $1. Pode então adicionar isto ao seu .bash_profile se escolher.

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

Exemplo de utilização:

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

Escolhi lsf para “list full” ou “list file”, faz sentido para mim mas sinta-se à vontade para modificar.


Actualização (Obrigado @santiago-arizti) Para poder usar isto com caminhos relativos (ex.: 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

Eu queria mais do que vocês precisavam, precisava também de poder perguntar sobre ficheiros num directório relativo, como o ../../readme.md, e o resultado deveria ser algo como /Users/santi/readme.md

Então criei um script (executável) numa pasta que faz parte do $PATH chamado lsf com o seguinte conteúdo:

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

Então você pode usá-lo assim:

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

Nenhum parâmetro lhe dá aviso

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

Diretório falso lhe dá aviso (por causa 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

Arquivo falso mas diretório real não avisa (você pode adicionar validação se precisar)

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

Pode também usar o comando “find” para listar todos os ficheiros com caminho completo:

find DirectoryName -type f

ou apenas o seguinte:

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

Encontrará a seguir um ficheiro dentro do directório de trabalho que corresponde a file.txt e devolve o seu caminho absoluto

find `pwd` -name file.txt