Wie kann der vollständige Pfad einer Datei einschließlich des vollständigen Dateinamens im Mac OSX-Terminal angezeigt werden?


40

'ls' kann den Dateinamen anzeigen, z

ls config.inc.php
config.inc.php 

'pwd' zeigt den vollständigen Pfad des aktuellen Ordners an, z

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Gibt es einen Befehl, der sie zusammenstellen kann, wäre in der Lage zu zeigen:

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

Antworten:


31

Von hier aus: https://stackoverflow.com/a/4031502/804713

Macports und Homebrew bieten ein Coreutils-Paket mit Greadlink (GNU Readlink). Dank an Michael Kallweitt in mackb.com

Installieren Sie Coreutils

greadlink -f file.txt


1
Das hat mich verrückt gemacht. Ich überlegte, warum ich -fnicht mit Nicht-GNU arbeiten würde und wie ich es zum Laufen bringen könnte. Das funktioniert. Vielen Dank
sdkks

1
Beachten Sie, dass dies auch für Verzeichnisse funktioniert
Paul Razvan Berg

20

Dafür gibt es viele Möglichkeiten. Hier ist ein Beispiel, das für Sie funktionieren könnte:

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

Wenn Sie weitere Beispiele wünschen, finden Sie in diesem Beitrag eine Reihe von Informationen zu stackoverflow.


1
Die meisten guten Antworten in stackoverflow.com/questions/5265702/… funktionieren jedoch unter OS X nicht sofort .
Quentin Pradet

9

Führen Sie unter Mac OS X die folgenden Schritte aus:

  1. cd in das Verzeichnis der Zieldatei.
  2. Geben Sie einen der folgenden Terminalbefehle ein.
Terminal
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. Ersetzen Sie file.txtdurch Ihren tatsächlichen Dateinamen.
  2. Drücken Sie Enter.

2

Sie können auch den Befehl "find" verwenden, um alle Dateien mit vollständigem Pfad aufzulisten:

find DirectoryName -type f

oder nur das Folgende:

find . -type f

1
Dies gibt nicht den absoluten Pfad zurück (nach dem OP anscheinend gesucht hat)
Anzeige Nr.

2

Ich mochte keine der angegebenen Lösungen, also habe ich meine eigene basierend auf https://stackoverflow.com/a/22684652/953327 erstellt

Erstellen Sie einen Alias, der einfach ein Funktionsaufruf ist, der pwdund kombiniert ls $1. Sie können dies dann zu Ihrer hinzufügen, .bash_profilewenn Sie möchten.

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

Anwendungsbeispiel:

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

Ich habe mich lsffür "Liste vollständig" oder "Listendatei" entschieden. Das ist für mich sinnvoll, kann aber jederzeit geändert werden.


Update (Danke @ santiago-arizti) Um dies mit relativen Pfaden verwenden zu können (zB lsf ../../readme.md)

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'

Ich musste anrufen, ich mag dies, lsf ../../readme.mdso dass ich Ihre Version ein wenig geändertalias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
Santiago arizti

Ich hoffe, es macht dir nichts aus, ich habe meine eigene Antwort hinzugefügt, aber mit einem Skript in einem $ PATH-Verzeichnis anstelle eines Aliases
Santiago Arizti

2

Ich wollte mehr als Sie brauchten, ich musste auch in der Lage sein, nach Dateien in einem relativen Verzeichnis zu fragen ../../readme.md, und das Ergebnis sollte ungefähr so sein/Users/santi/readme.md

Also habe ich ein (ausführbares) Skript in einem Ordner erstellt, der Teil des $PATHaufgerufenen ist, lsfmit folgendem Inhalt:

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

Du kannst es also so benutzen:

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

Kein Parameter gibt Ihnen eine Warnung

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

Gefälschtes Verzeichnis gibt Ihnen eine Warnung (wegen dirname)

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

Gefälschte Datei, aber echtes Verzeichnis warnt nicht (Sie können bei Bedarf eine Validierung hinzufügen)

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

1

Im Folgenden wird eine Datei im Arbeitsverzeichnis gefunden, die mit file.txtdem absoluten Pfad übereinstimmt, und dieser zurückgegeben

find `pwd` -name file.txt

Perfekt. 654321
Jan Kyu Peblik

1

Verwenden realpath

Z.B:

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

Beantwortet hier auf stackoverflow: https://stackoverflow.com/a/3915075/441960

Zu Ihrer Information, meine Version von 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.