Mac OSX端末でフルファイル名を含むファイルのフルパスを表示するにはどうすればよいですか?


40

'ls'はファイル名を表示できます。たとえば

ls config.inc.php
config.inc.php 

「pwd」は、現在のフォルダーのフルパスを表示します。例えば

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

それらをまとめることができるコマンドはありますか、表示できるでしょう:

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

回答:


31

ここから:https : //stackoverflow.com/a/4031502/804713

macportsとhomebrewは、greadlink(GNU readlink)を含むcoreutilsパッケージを提供します。mackb.comのMichael Kallweitt投稿の功績

coreutilsをインストールする

greadlink -f file.txt


1
これは私を夢中にさせていました。私はなぜ-f非GNUで動作しないのか、それを動作させる方法を考えていました。これは動作します。ありがとう
-sdkks

1
これはディレクトリに対しても機能することに注意してください
ポールラズ

20

それを行うには多くの方法があります。ここにあなたのために働くかもしれない一つの例があります:

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

さらに多くの例が必要な場合は、stackoverflowのこの投稿に多数の記事があります。


1
stackoverflow.com/questions/5265702/で最も良い答えがしかし、OS Xではそのままでは機能しません。
クエンティンプラデ15年

9

Mac OSXでは、次の手順を実行します。

  1. cd ターゲットファイルのディレクトリに。
  2. 次の端末コマンドのいずれかを入力します。
ターミナル
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. file.txt実際のファイル名に置き換えます。
  2. を押しEnterます。

2

「find」コマンドを使用して、すべてのファイルを完全なパスでリストすることもできます。

find DirectoryName -type f

または単に次のとおりです。

find . -type f

1
これは絶対パスを返しません(OPが探していたもののようです)
広告N

2

与えられたソリューションはどれも好きではなかったので、https://stackoverflow.com/a/22684652/953327に基づいて独自のソリューションを作成しました

単にそのコンバイン関数呼び出しでエイリアスを作成pwdしてls $1.bash_profile必要に応じて、これを追加できます。

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

使用例:

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

lsf「list full」または「list file」を選択しましたが、理にかなっていますが、自由に変更してください。


更新(@ santiago-ariztiに感謝)これを相対パスで使用できるようにするには(例lsf ../../readme.md

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

このlsf ../../readme.mdように電話する必要があったので、あなたのバージョンを少し変更しましたalias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
サンティアゴアリズティ

気にしないでください、私は自分の答えを追加しましたが、エイリアスの代わりに$ PATHディレクトリにスクリプトを追加しました
santiago arizti

2

あなたが必要とする以上のものが欲しかったので、のような相対ディレクトリ内のファイルについても質問できるようにする必要が../../readme.mdあり、結果は次のようになるはずです/Users/santi/readme.md

そのため、次の内容で$PATH呼び出されるの一部であるフォルダーに(実行可能)スクリプトを作成しましたlsf

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

したがって、次のように使用できます。

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

警告を与えるパラメータはありません

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

偽のディレクトリには、(のために警告できますdirname

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

偽のファイルですが、実際のディレクトリは警告しません(必要に応じて検証を追加できます)

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

1

次は、作業ディレクトリ内で一致するファイルを見つけ、file.txtその絶対パスを返します。

find `pwd` -name file.txt

パーフェクト。654321
Jan Kyu Peblik

1

つかいます realpath

例えば:

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

ここでstackoverflowについて回答しました:https : //stackoverflow.com/a/3915075/441960

参考までに、私のバージョンの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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.