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

Jak wyświetlić pełną ścieżkę do pliku wraz z pełną nazwą pliku w terminalu Mac OSX?

‘ls’ może pokazać nazwę pliku, np.

ls config.inc.php
config.inc.php

‘pwd’ pokaż aktualną pełną ścieżkę do folderu, np.

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Czy istnieje polecenie, które może je złożyć, może pokazać:

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

Odpowiedzi (8)

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

Stąd 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

Jest na to wiele sposobów; oto jeden przykład, który może zadziałać dla Ciebie:

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

Jeśli chcesz więcej przykładów, jest kilka na ten post w stackoverflow.

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

W systemie Mac OSX należy wykonać następujące kroki:

  1. cd do katalogu docelowego pliku.
  2. Wpisz jedno z poniższych poleceń terminala. Terminal ls "`pwd`/file.txt" echo $(pwd)/file.txt

  3. Zamień file.txt na rzeczywistą nazwę pliku.

  4. Naciśnij Enter.

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

Użyj realpath

Np.:

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

Odpowiedź tutaj na stackoverflow: https://stackoverflow.com/a/3915075/441960

FYI, moja wersja 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

Nie podobało mi się żadne z podanych rozwiązań, więc stworzyłem swój własny na podstawie https://stackoverflow.com/a/22684652/953327

Stwórz alias, który jest po prostu wywołaniem funkcji łączącej pwd i ls $1. Następnie możesz to dodać do swojego .bash_profile jeśli wybierzesz.

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

Przykład użycia:

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

Wybrałem lsf dla “lista pełna” lub “plik listy”, ma dla mnie sens, ale możesz go zmodyfikować.

  • *

Uaktualnij (Dzięki @santiago-arizti) Aby móc używać tego z relatywnymi ścieżkami (np. 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

Chciałem więcej niż potrzebowałeś, musiałem też móc pytać o pliki w katalogu względnym, jak ../../readme.md, a wynikiem powinno być coś w rodzaju /Users/santi/readme.md

Więc stworzyłem (wykonywalny) skrypt w katalogu, który jest częścią $PATH o nazwie lsf z następującą zawartością:

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

Więc możesz użyć go w ten sposób:

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

Żaden z parametrów nie daje ostrzeżenia

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

Fałszywy katalog daje ostrzeżenie (z powodu dirname)

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

Fałszywy plik, ale prawdziwy katalog nie daje ostrzeżenia (możesz dodać walidację, jeśli chcesz)

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

Możesz również użyć polecenia “znajdź” do wypisania wszystkich plików z pełną ścieżką:

find DirectoryName -type f

lub po prostu:

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

Poniżej znajduje się plik w katalogu roboczym, który pasuje do file.txt i zwraca jego ścieżkę bezwzględną

find `pwd` -name file.txt