Bagaimana cara menunjukkan path lengkap file termasuk nama file lengkap di terminal Mac OSX?


40

'ls' dapat menampilkan nama file, mis

ls config.inc.php
config.inc.php 

'pwd' memperlihatkan path lengkap folder saat ini, mis

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Apakah ada perintah yang dapat menyatukan mereka, akan dapat menunjukkan:

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

Jawaban:


31

Dari sini: https://stackoverflow.com/a/4031502/804713

macports dan homebrew menyediakan paket coreutils yang berisi greadlink (GNU readlink). kredit ke posting Michael Kallweitt di mackb.com

buat instal coreutils

greadlink -f file.txt


1
Ini membuatku gila. Saya berpikir mengapa -ftidak bekerja pada non-GNU dan bagaimana membuatnya bekerja. Ini bekerja. Terima kasih
SDK

1
Perhatikan bahwa ini juga berfungsi untuk direktori
Paul Razvan Berg

20

Ada banyak cara untuk melakukan itu; berikut adalah salah satu contoh yang mungkin cocok untuk Anda:

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

Jika Anda ingin lebih banyak contoh, ada banyak di posting ini di stackoverflow.


1
Namun, sebagian besar jawaban bagus di dalam stackoverflow.com/questions/5265702/… tidak berfungsi di luar kotak pada OS X, namun.
Quentin Pradet

9

Di Mac OSX, lakukan langkah-langkah berikut:

  1. cd ke dalam direktori file target.
  2. Ketikkan salah satu dari perintah terminal berikut.
Terminal
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. Ganti file.txtdengan nama file Anda yang sebenarnya.
  2. Tekan Enter.

2

Anda juga dapat menggunakan perintah "find" untuk mendaftar semua file dengan path lengkap:

find DirectoryName -type f

atau hanya yang berikut ini:

find . -type f

1
Ini tidak mengembalikan jalur absolut (yang tampaknya menjadi apa yang dicari OP)
Ad N

2

Tidak menyukai salah satu solusi yang diberikan, jadi saya membuat sendiri berdasarkan dari https://stackoverflow.com/a/22684652/953327

Buat alias yang hanya merupakan panggilan fungsi yang menggabungkan pwddan ls $1. Anda kemudian dapat menambahkan ini ke Anda .bash_profilejika Anda mau.

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

Contoh penggunaan:

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

Saya memilih lsfuntuk "daftar penuh" atau "daftar file", masuk akal bagi saya tetapi merasa bebas untuk memodifikasi.


Perbarui (Terima kasih @ santiago-arizti) Untuk dapat menggunakan ini dengan jalur relatif (misalnya lsf ../../readme.md)

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

Saya perlu menelepon saya seperti ini lsf ../../readme.mdjadi saya mengubah versi Anda sedikitalias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
santiago arizti

harap Anda tidak keberatan, saya menambahkan jawaban saya sendiri tetapi dengan skrip dalam dir $ PATH bukan aliase
santiago arizti

2

Saya ingin lebih dari yang Anda butuhkan, saya harus dapat juga bertanya tentang file dalam direktori relatif, seperti ../../readme.md, dan hasilnya harus seperti/Users/santi/readme.md

Jadi saya membuat skrip (yang dapat dieksekusi) dalam folder yang merupakan bagian dari yang $PATHdipanggil lsfdengan konten berikut:

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

Jadi Anda bisa menggunakannya seperti ini:

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

Tidak ada parameter yang memberi Anda peringatan

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

Direktori palsu memberi Anda peringatan (karena 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 palsu tetapi direktori sebenarnya tidak memperingatkan (Anda dapat menambahkan validasi jika perlu)

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

1

Berikut ini akan menemukan file di dalam direktori kerja yang cocok file.txtdan mengembalikan jalur absolutnya

find `pwd` -name file.txt

Sempurna. 654321
Jan Kyu Peblik

1

Menggunakan realpath

Misalnya:

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

Dijawab di sini di stackoverflow: https://stackoverflow.com/a/3915075/441960

FYI, versi MacOS (OSX) saya:

$ 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.