ファイル名の先頭に「-(ハイフン)」があるファイルをLinuxコマンド「rm」で削除する方法

ファイル名の先頭に「-(ハイフン)」があるファイルをLinuxコマンド「rm」で削除する場合、注意が必要。

普通に「rm 削除対象のファイル名」としたのでは、削除できない。

[root@nobuneko 10]# ls -ahl |more
合計 14M
-rw-r--r-- 1 root  root  1.3K  3月 22 20:41 -38.html
-rw-r--r-- 1 root  root  1.3K  3月 22 20:41 -384.html

上記の「-384.html」を削除しようと思って、「rm -f -384.html」とすると、以下のようにエラーとなり、削除できない。

[root@nobuneko 10]# rm -f -384.html
rm: オプションが違います -- 3
Try `rm ./-384.html' to remove the file `-384.html'.
詳しくは `rm --help' を実行して下さい.

エラーメッセージにヘルプを参照してください、といったことが記述されていたので、ヘルプを見てみる。

[root@nobuneko 10]# rm --help
Usage: rm [OPTION]... FILE...
Remove (unlink) the FILE(s).

  -f, --force           ignore nonexistent files, never prompt
  -i, --interactive     prompt before any removal
      --no-preserve-root do not treat `/' specially (the default)
      --preserve-root   fail to operate recursively on `/'
  -r, -R, --recursive   remove directories and their contents recursively
  -v, --verbose         explain what is being done
      --help     この使い方を表示して終了
      --version  バージョン情報を表示して終了

By default, rm does not remove directories.  Use the --recursive (-r or -R)
option to remove each listed directory, too, along with all of its contents.

`-' で始まる名前のファイルを削除するには、例えば `-foo' というファイルなら
こういうコマンドを使いましょう
  rm -- -foo

  rm ./-foo

ファイルの削除に rm を使った場合、通常はそのファイル内容を復元できてしまう、
ということには留意しておいてください。もしその内容を本当に復元不可能にする
保証を得たければ、shred の利用を考えてみてください。

バグを発見したら <bug-coreutils@gnu.org> 宛に報告して下さい.

ヘルプに思いっきり答えが書かれていた。

`-' で始まる名前のファイルを削除するには、例えば `-foo' というファイルなら
こういうコマンドを使いましょう
  rm -- -foo

  rm ./-foo

つまり、ファイル名の先頭に「-(ハイフン)」があるファイルを削除したい場合は、ファイル名の前に「-(ハイフン)」を2つ連続して書いておけばよい、ということが分かった。

今回の例では、

[root@nobuneko 10]# rm -f -- -384.html

とすることで削除できた。

前へ

昨日の東北地方太平洋沖地震でPHS(ウィルコム)とSkypeが大変役に立った

次へ

久しぶりの休日っぽいものを今日はホテルで過ごす