コマンド ラインで pwd コマンドを使用すると、現在のディレクトリのフル パス (絶対パス) を取得できることは誰もが知っています。
pwd
では、ファイルの絶対パスを取得するにはどうすればよいでしょうか? ファイルのフルパスを出力するには、いくつかの方法があります。
読むリンク
実パス
探す
ls と pwd を組み合わせて使用します
$ readlink -f sample.txt
/home/gliu/sample.txt
$ realpath -s sample.txt
/home/gliu/sample.txt
$ find $(pwd) -name sample.txt
/home/gliu/sample.txt
以下にこれらのコマンドを詳しく紹介します。ただし、その前に、絶対パスと相対パスの概念に関連する基本的な知識を理解することをお勧めします。
readlinkを使用してファイルパスを取得します
readlink の本来の用途はシンボリック リンクを解析することですが、次のようにファイルのフル パスを表示するために使用できます。
readlink -f filename
以下は例です。
$ readlink -f sample.txt
/home/gliu/sample.txt
realpath を使用してファイルのフルパスを取得します
realpath はもともと絶対ファイル名を解析するために使用されていましたが、ここではファイルのフル パスを表示するためにも使用できます。
realpath filename
以下に例を示します。
$ realpath sample.txt
/home/gliu/sample.txt
シンボリック リンクを使用している場合は、元のファイルへの実際のパスが表示されます。シンボリックリンクをたどらないように強制できます (つまり、現在のファイルへのパスを表示します)。
realpath -s filename
以下に例を示します。デフォルトではソース ファイルへのフル パスが表示されますが、元のファイルの代わりにシンボリック リンクを表示するように強制します。
$ realpath linking-park
/home/gliu/Documents/ubuntu-commands.md
$ realpath -s linking-park
/home/gliu/linking-park
find コマンドを使用してファイルの絶対パスを取得します
find コマンドを使用してファイル パスを取得する方法は次のとおりです。
find コマンドでは、指定されたパスがドットの場合は相対パスが表示され、指定されたパスが絶対パスの場合は検索ファイルの絶対パスを取得できます。
次のように、find コマンドでコマンド プレースホルダーを使用します。
find $(pwd) -name filename
これを使用して、単一ファイルの絶対パスを取得できます。
$ find $(pwd) -name sample.txt
/home/gliu/sample.txt
あるいは、一致するパターン (アスタリスク* など) を使用して、一連のファイルへのパスを取得することもできます。
$ find $(pwd) -name "*.pdf"
/home/gliu/Documents/eBooks/think-like-a-programmer.pdf
/home/gliu/Documents/eBooks/linux-guide.pdf
/home/gliu/Documents/eBooks/absolute-open-bsd.pdf
/home/gliu/Documents/eBooks/theory-of-fun-for-game-design.pdf
/home/gliu/Documents/eBooks/Ubuntu 1804 english.pdf
/home/gliu/Documents/eBooks/computer_science_distilled_v1.4.pdf
/home/gliu/Documents/eBooks/the-art-of-debugging-with-gdb-and-eclipse.pdf
ls コマンドを使用してフルパスを出力します
ls コマンドを使用してファイルの絶対パスを取得します。これは少し複雑です。
次のように、ls コマンドで環境変数 PWD を使用して、ファイルとディレクトリの絶対パスを表示できます。
ls -ld $PWD/*
上記のコマンドを使用すると、次の出力が得られます。
$ ls -ld $PWD/*
-r--rw-r-- 1 gliu gliu 0 Jul 27 16:57 /home/gliu/test/file2.txt
drwxrwxr-x 2 gliu gliu 4096 Aug 22 16:58 /home/gliu/test/new
上記のコマンドを使用してファイルの絶対パスを出力するには、次のように使用できます。
ls -l $PWD/filename
これは最良の解決策ではありませんが、機能します。以下の例を参照してください。
$ ls -l $PWD/sample.txt
-rw-r--r-- 1 gliu gliu 12813 Sep 7 11:50 /home/gliu/sample.txt
上記では、Linux でファイルのフル パスを取得する 4 つの方法を紹介しました。そのうち、find と ls コマンドが最も一般的です。realpath と readlink の 2 つの方法は、多くの新規ユーザーには明らかかもしれませんが、常に方法があります。時々新しいことを学ぶのは良いことです。
他にアイデアがある場合は、メッセージ領域でお気軽にご相談ください。