Linux でハイフンで始まるファイル・ディレクトリの削除をするためのメモ

Linux でハイフンで始まるファイル・ディレクトリの削除をするためのメモ

Linux でハイフンで始まるファイル・ディレクトリの削除をするためのメモです。

背景

ファイル名やディレクトリ名が - (ハイフン) で始まっている場合、rm コマンドがそれをオプションとして解釈してしまい、削除できないことがあります。

具体的には Claude Code のセッションフォルダがパスをハイフンと置き換えるため、うまく rm で削除できなかったんです。

$ rm -Rf -home-node-workspace-repos-hackathon-mcp
rm: invalid option -- 'h'
Try 'rm ./-home-node-workspace-repos-hackathon-mcp' to remove the file '-home-node-workspace-repos-hackathon-mcp'.

-home-h と反応してるみたい。こんなことあるんだ!と、びっくりしました。

./ を先頭につけるとうまく回避できる

いろいろ考えあぐねたのですが AI にも聞きつつ、やりやすい方法として ./ を先頭につけるとうまく回避できることが分かりました。

rm -Rf ./-home-node-workspace-repos-hackathon-mcp

./ を付けることでハイフンが入っていても「現在のディレクトリにあるこのファイル・ディレクトリ」と明示的に指定できるため - で始まる名前でもオプションとして解釈されなくなります。

ふりかえり

ちなみに、ほかにも策があり。 -- を使ってオプションの終わりを明示するようなテクニックもあって、検証ではうまくいったものの、ちょっと私が常時思い出せる自信がないので、次点の策としました。

もしも、ファイル名やディレクトリ名を自分で付けるときは、

  • ハイフンで始まる名前は避ける
  • 英数字、アンダースコア、ハイフンを使う場合は先頭以外で使う
  • スペースや特殊文字の使用を避ける

といったルールがあれば避けられますね。(実際避けてる)

そうなんですけど今回のように Claude Code が自動で生成するフォルダのようなシチュエーションだと回避が難しいので、正攻法に「ちゃんとハックせずに消す」というのが見つけることができてよかったです。