ターミナルで使用するファイルへの完全なパスをすばやく取得するにはどうすればよいですか?


回答:


44
readlink -f foo.bar

または(最初にインストールする)

realpath foo.bar

この答えは、受け入れられた答えよりも正確です。
-Kunok

完全なフォルダーの場合:ls | xargs realpath
パブロA

1
欠点はreadlink、ファイルが存在しなくても機能することです。これは非常に奇妙な方法でバグを永続化する可能性があります。
GregRos

32

ファイルをターミナルにドラッグアンドドロップするだけです。


1
D:私はここので、私は忘れていないこと、これを入れている、のは、それはあなたのいくつかの役に立てば幸いましょう
オリヴィエ・ラロンド

実際にマウントされたパスではなく、SMBマウントされた共有の「smb://」プレフィックス付きパスを返します。
クピアコス

@Kupiakos:私にとって、gnome-terminalはドロップされたファイルのパスを幸福に変換します'/home/alexcohn/.gvfs/…'
Alex Cohn 14年

11

すべての良い答え。別の状況のヒントを以下に示します。

nautilusを使用してファイルを参照していて、現在のディレクトリの完全なパスが必要な場合は、を押しCTRL+Lます。これにより、ブレッドクラムボタンが一時的に古いスタイルのアドレスバーに戻り、パスをコピーできるようになります。


…しかし、これはまだsmb://スタイルなので、ターミナルで再利用することはできません。
アレックスコーン14年

面白い; 私のシステム(Ubuntu 13.10)では、smb://-styleパスを取得しません。
シッコ14年

まさに私が探していたもの、つまりターミナルはlsに最適な場所ですが、ファイルフォルダービューで作業することがあります: ')
-edencorbin


1

アイコンをドラッグすることに加えて、ノーチラス(またはthunar、konquerorなど)を使用せずにフルパスを取得する方法がいくつかあります。次に、トリプルクリックまたはクリックアンドドラッグしてコピーし、クリップボードマネージャー*に保存して、必要な場所に貼り付けます。
(pastie、klipper、glippy、glipper、anamnesis)

  • findファイルの上のディレクトリで使用できます。(それがどこにあるかわからない場合は、シェルがあなたをドロップするところから始めてください。[一般的に]ホームディレクトリの一番上で。)
    find . | egrep filename

  • を使用locateしてファイル名を取得できます。(sudo updatedb最近行われていない場合に実行します。)

findを使用するより現実的な例は、次のようなものです。

$ find | egrep askubuntu | grep txt
./askubuntu-temp.txt
./drDocuments/web/meta.askubuntu.txt
./other/stuff/askubuntu.txt.iteration.1
./other/stuff/askubuntu.txt.iteration.2
[...]

好きではないものを切り取るには、例えば:

find | egrep askubuntu | grep txt | egrep -v iteration
find | egrep askubuntu | grep txt | egrep -v 'iteration|meta|other'

Locateはほぼ同じ方法で使用されますが、grepの方が頻繁に必要です。

locate myfile | egrep home | egrep -v 'mozilla|cache|local|bin|\.pyc|test' | grep \.py

これはこれを入力する最も効率的な方法ではありませんが、通常、ファイルを紛失した場合は、繰り返してこれを繰り返し、grep句を追加します。


1

os.realpath()関数を使用してPythonで簡単に実行:

$ python -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' ./VirtualBox\ VMs/                                      
/mnt/HDD/VirtualBox VMs

関連する回答から、あなたも使用することができますreadlink

$ readlink -e ./out.txt                                                                                                  
/home/username/out.txt

0

Nautilusでファイルを単純にコピーすると、フルパスがコピーされます。
次に、ターミナルに貼り付けます。貼り付けるだけで、次のようになります。

file:///home/juan/2017/agenda20170101.html

右クリックして「ファイル名の貼り付け」を選択すると、以下が表示されます。

'/home/juan/2017/agenda20170101.html'

示されているように引用符で。
これは、名前ではなくファイルコンテンツをコピーするWindowsとは異なります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.