Come mostrare il percorso completo di un file incluso il nome file completo nel terminale Mac OSX?


40

'ls' può mostrare il nome del file, ad es

ls config.inc.php
config.inc.php 

'pwd' mostra il percorso completo della cartella corrente, ad es

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

C'è un comando che può metterli insieme, sarebbe in grado di mostrare:

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

Risposte:


31

Da qui: https://stackoverflow.com/a/4031502/804713

macports e homebrew forniscono un pacchetto coreutils contenente greadlink (GNU readlink). Ringraziamo il post di Michael Kallweitt su mackb.com

brew install coreutils

greadlink -f file.txt


1
Questo mi stava facendo impazzire. Stavo pensando perché -fnon avrebbe funzionato su non GNU e come farlo funzionare. Questo funziona Grazie
sdkks il

1
Nota che questo funziona anche per le directory
Paul Razvan Berg,

20

Ci sono molti modi per farlo; ecco un esempio che potrebbe funzionare per te:

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

Se vuoi altri esempi, ci sono molti articoli su questo post su StackOverflow.


1
Tuttavia, le risposte più valide su stackoverflow.com/questions/5265702/… non funzionano immediatamente su OS X.
Quentin Pradet,

9

In Mac OSX, procedere come segue:

  1. cd nella directory del file di destinazione.
  2. Digitare uno dei seguenti comandi del terminale.
terminale
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. Sostituisci file.txtcon il tuo nome file effettivo.
  2. Press Enter.

2

Puoi anche usare il comando "trova" per elencare tutti i file con il percorso completo:

find DirectoryName -type f

o solo il seguente:

find . -type f

1
Questo non restituisce il percorso assoluto (che sembra essere ciò che OP stava cercando)
Annuncio N

2

Non mi è piaciuta nessuna delle soluzioni fornite, quindi ho inventato la mia basata su https://stackoverflow.com/a/22684652/953327

Crea un alias che è semplicemente una chiamata di funzione che combina pwde ls $1. Puoi quindi aggiungere questo al tuo .bash_profilese lo desideri.

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

Esempio di utilizzo:

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

Ho scelto lsf"elenco completo" o "elenco file", per me ha senso ma mi sento libero di modificarlo.


Aggiornamento (Grazie @ santiago-arizti) Per poterlo utilizzare con percorsi relativi (es. lsf ../../readme.md)

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

Avevo bisogno di chiamare mi piace lsf ../../readme.mdcosì ho modificato un po 'la tua versionealias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
santiago arizti il

spero non ti dispiaccia, ho aggiunto la mia risposta ma con uno script in una directory $ PATH invece che in un altro modo
santiago arizti

2

Volevo più del necessario, dovevo anche essere in grado di chiedere informazioni sui file in una relativa directory ../../readme.md, e il risultato dovrebbe essere qualcosa di simile/Users/santi/readme.md

Quindi ho creato uno script (eseguibile) in una cartella che fa parte del $PATHchiamato lsfcon i seguenti contenuti:

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

Quindi puoi usarlo in questo modo:

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

Nessun parametro ti avvisa

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

La directory falsa ti avvisa (a causa di dirname)

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

File falso ma directory reale non avvisa (è possibile aggiungere la convalida se necessario)

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

1

Di seguito troverai un file nella directory di lavoro che corrisponde file.txte restituisce il suo percorso assoluto

find `pwd` -name file.txt

Perfezionare. 654321
Jan Kyu Peblik,

1

Uso realpath

Per esempio:

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

Risposto qui su StackOverflow: https://stackoverflow.com/a/3915075/441960

Cordiali saluti, la mia versione di 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.