ハイフンから始まるファイルやディレクトリを削除したい

やまもとやま
2023-07-11
2023-07-11

消せない!どうしよう!

どうも、やまもとやまです。
ファイルやディレクトリを作成したものの、消せなくなってしまった!
そんなことありますよね。
Linuxを使い慣れてきた頃によくあるケースですが、今回はハイフンで始まるファイルの対処方法について備忘録的に残しておこうと思います。

なんで消えないのか

こんなファイルがあるとします。

$ ls -l
total 0
-rw-rw-r-- 1 yamamoto yamamoto 0 Mar 28 19:30 -minus-

では早速削除してみましょう。

$ rm -minus-
rm: invalid option -- 'm'
Try 'rm ./-minus-' to remove the file '-minus-'.
Try 'rm --help' for more information.

怒られた!!
エラーメッセージの通り、ハイフンから始まると、コマンドのオプションと認識されてしまうようです。
よく見ると親切なことに対応方法も書いてありますね。
ディレクトリ名も含めたファイル名にすれば消せそうです。

$ rm ./-minus-
$ ls -la
total 8
drwxrwxr-x 2 yamamoto yamamoto 4096 Mar 28 19:31 .
drwx------ 3 yamamoto yamamoto 4096 Mar 28 19:29 ..

無事消せました。ばんざい。

容量計算もしたいのだ

ついでに別の例で、配下の各ディレクトリの容量を集計したいとします。
通常は、

$ du -sh *

こんな感じで計算すると思います。

ところが、ハイフンで始まるディレクトリがある場合、、、

$ ls -l
total 16
drwxrwxr-x 2 yamamoto yamamoto 4096 Mar 28 20:08 -test
drwxrwxr-x 2 yamamoto yamamoto 4096 Mar 28 20:08 fuga
drwxrwxr-x 2 yamamoto yamamoto 4096 Mar 28 20:08 hoge
drwxrwxr-x 2 yamamoto yamamoto 4096 Mar 28 20:08 pon

$ du -sh *
du: invalid -t argument 'est'

やっぱり怒られる!どうしよう!

このケースでは、あわてず騒がず、「--」をつけてやりましょう。
「--」をつけると、それ以降はオプションと認識されなくなります。

$ du -sh -- *
4.0K    -test
4.0K    fuga
4.0K    hoge
4.0K    pon

やりましたね。無事計算できました。

危ないところでした

誤って作成したファイルが消せなくなったり、予定したオペレーションができなかったり・・・
焦りますよね。怖い怖い。
そんなときも大抵何らかの対応方法があるものなので、頭の片隅に置いておくと便利です。
それではまた!