FreeBSD QandA 1671

FreeBSD QandA

Q. ファイル名の途中にスペースが入ったファイルが作成されてしまい、
   rm コマンドで消すことができません。どうすればいいですか?

A. 様々な方法があります。

     - rm 'hoge hoge' とする
     - rm "hoge hoge" とする。
     - スペースの前に \ を付けて、 rm hoge\ hoge とする。
     - シェルのメタキャラクタ (? や * など) を使って、 rm hoge?hoge などとする。

   以上の方法は、 sh, csh, ksh, tcsh, bash, zsh に共通して使えます。

   tcsh や bash や zsh のファイル名補完は、ファイル名に特殊な文字を
   含んでいても、うまく補完してくれます。たとえば tcsh で、消したい
   ファイル以外に hoge で始まるファイルが存在しない状態で、
      % rm hoge
   まで入力してタブを入力すると、
      % rm hoge\ hoge
   のように補完してくれます。

   シェルに依存しない方法としては、次のようなものがあります。
     - find . -ls で該当ファイルの i-node (1カラム目に表示される数字) を調べて、
       find -x . -inum 123456 -exec rm {} \; とする。
     - rm -i * として該当ファイル以外は no を、該当ファイルのみ yes を選ぶ。
     - FDclone で消す。
     - Emacs の dired モードで消す。
        emacs を実行し、M-x dired としてディレクトリ名を入力
     - Lynx の dired モードで消す。
     - perl -e 'unlink "hoge hoge"' する。
     - echo 'main(){unlink("hoge hoge");}' > foo.c && cc foo.c && ./a.out する。
     - samba で MS-Windows から消す。
     - cap で Mac から消す。
     - FTP で DELE hoge hoge する。
     - rm -rf で、一つ上のディレクトリから消す。
     - fdisk / newfs / format しちゃう。

   ファイル名の途中にハイフンやアスタリスク、日本語などが入っている
   ファイルも、同様の方法で消すことができます。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。