カテゴリ: Linuxコマンド集 更新日: 2025/11/03

dirnameコマンドとは?Linuxでパスからディレクトリ部分を抽出する基本

dirnameコマンドとは?Linuxでパスからディレクトリ部分を抽出する基本
dirnameコマンドとは?Linuxでパスからディレクトリ部分を抽出する基本

先生と生徒の会話形式で理解しよう

生徒

「Linuxでファイルのパスから、どこのフォルダにあるかだけを取り出す方法ってありますか?」

先生

「それならdirnameコマンドが便利ですよ。ファイルが入っているディレクトリだけを取り出せます。」

生徒

「ディレクトリって何でしたっけ?」

先生

「ディレクトリとは、Windowsでいう“フォルダ”のことです。dirnameコマンドを使えば、ファイルがどのフォルダにあるかを簡単に知ることができますよ。」

1. dirnameコマンドとは?

1. dirnameコマンドとは?
1. dirnameコマンドとは?

dirname(ディアネーム)コマンドは、Linuxでファイルやディレクトリのパス(場所)からディレクトリ部分だけを取り出すコマンドです。例えば、/home/user/file.txtというパスがあったとき、「どのフォルダにあるのか」を知りたい場合に使います。

パスとは、ファイルやフォルダの場所を示す情報で、/(スラッシュ)で区切られた形で表示されます。Linuxの世界では、すべてのファイルやフォルダはルート(/)から始まるパスで管理されています。

2. dirnameコマンドの基本的な使い方

2. dirnameコマンドの基本的な使い方
2. dirnameコマンドの基本的な使い方

以下のように、コマンドの後ろにパスを指定するだけで、そのパスの中から「フォルダ(ディレクトリ)」だけを抽出できます。


dirname /home/user/file.txt
/home/user

この例では、「file.txt」はファイル名で、「/home/user」がファイルが入っているフォルダの場所です。

3. 相対パスでも使える

3. 相対パスでも使える
3. 相対パスでも使える

dirnameコマンドは、絶対パスだけでなく、カレントディレクトリ(現在の場所)からの相対パスにも使えます。


dirname Documents/report.txt
Documents

ここでは「Documents」フォルダの中にある「report.txt」というファイルの親ディレクトリ(=Documents)が出力されます。

4. ファイル名だけの入力では「.(カレントディレクトリ)」

4. ファイル名だけの入力では「.(カレントディレクトリ)」
4. ファイル名だけの入力では「.(カレントディレクトリ)」

もしパスの中にディレクトリが含まれていない(ファイル名だけ)の場合、dirnameは「現在の場所(カレントディレクトリ)」を意味する.(ドット)を返します。


dirname file.txt
.

この「.」は、今いるディレクトリを指す記号で、Linuxの基本的な表現方法です。

5. 複数スラッシュがある場合でも安心

5. 複数スラッシュがある場合でも安心
5. 複数スラッシュがある場合でも安心

スラッシュが重なっていても、自動的に1つにして正しく処理してくれます。


dirname /home//user///file.txt
/home/user

スラッシュがいくつ重なっていても、Linuxは1つの区切りとして認識してくれます。

6. basenameコマンドとの違い

6. basenameコマンドとの違い
6. basenameコマンドとの違い

dirnameとよくセットで使われるのがbasename(ベースネーム)コマンドです。dirnameが「フォルダ名」を取り出すのに対して、basenameは「ファイル名」だけを取り出します。


basename /home/user/file.txt
file.txt

このように使い分けることで、スクリプトやコマンドの中で柔軟にパス処理ができます。

7. dirnameコマンドを使った簡単スクリプト例

7. dirnameコマンドを使った簡単スクリプト例
7. dirnameコマンドを使った簡単スクリプト例

例えば、あるスクリプトの中で、指定されたパスの中からフォルダ部分を取り出したいときにはこう書きます:


#!/bin/bash
path="/var/www/html/index.html"
dir=$(dirname "$path")
echo "ディレクトリは: $dir"

このスクリプトを実行すると、次のような結果になります。


ディレクトリは: /var/www/html

このように、dirnameはスクリプトの中でも非常に役立つ基本コマンドのひとつです。

8. ファイルが実際に存在しなくても使える

8. ファイルが実際に存在しなくても使える
8. ファイルが実際に存在しなくても使える

dirnameは、パスとして書かれた文字列を処理するだけなので、実際にそのファイルが存在しなくてもエラーになりません。


dirname /tmp/hoge/fuga/test.txt
/tmp/hoge/fuga

このように、存在確認ではなく「文字列としてのパス構造」を解析する目的で使えます。

9. dirnameはパイプと組み合わせても便利

9. dirnameはパイプと組み合わせても便利
9. dirnameはパイプと組み合わせても便利

他のコマンドと組み合わせて、処理結果をdirnameに渡す使い方もできます。


find . -name "*.log" | xargs -n1 dirname
./logs
./var/log
./tmp

この例では、拡張子が.logのファイルを探し、そのフォルダだけを一覧表示しています。

関連記事:
カテゴリの一覧へ
新着記事
touch --no-createオプションの使い方を完全ガイド!初心者でもわかるファイルの新規作成防止法
basenameのSUFFIX指定で拡張子を除いてファイル名を取得する方法を解説!初心者向けLinuxコマンド講座
mv -tオプションの使い方|移動先ディレクトリを先に指定する便利な方法
lsコマンドの-rオプション|逆順(降順)でファイルを並べる方法を初心者向けに解説!
人気記事
No.1
Java&Spring記事人気No1
cdコマンドとは?Linuxでディレクトリを移動する基本を初心者向けに解説
No.2
Java&Spring記事人気No2
lsコマンドの-lオプションでファイルの詳細情報を一覧表示しよう!初心者でもわかる使い方と意味を徹底解説
No.3
Java&Spring記事人気No3
rm -Rオプションとは?初心者でもわかる再帰的にディレクトリを削除する方法
No.4
Java&Spring記事人気No4
Linuxコマンドpwd --help解説|オプション一覧を表示して使い方を確認する方法