FreeBSD QandA 1671
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 まで
お知らせください。