ファイル名の先頭に「-(ハイフン)」があるファイルを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 -- -foorm ./-foo
ファイルの削除に rm を使った場合、通常はそのファイル内容を復元できてしまう、
ということには留意しておいてください。もしその内容を本当に復元不可能にする
保証を得たければ、shred の利用を考えてみてください。バグを発見したら <bug-coreutils@gnu.org> 宛に報告して下さい.
ヘルプに思いっきり答えが書かれていた。
`-' で始まる名前のファイルを削除するには、例えば `-foo' というファイルなら
こういうコマンドを使いましょう
rm -- -foorm ./-foo
つまり、ファイル名の先頭に「-(ハイフン)」があるファイルを削除したい場合は、ファイル名の前に「-(ハイフン)」を2つ連続して書いておけばよい、ということが分かった。
今回の例では、
[root@nobuneko 10]# rm -f -- -384.html
とすることで削除できた。