Linuxで消せないファイルの対応方法

ls -l の結果が以下のように「*」「?」「-i」等ができていて通常のやりかただと
消えないファイルの対処方法です。ディレクトリごと消すという考えもありますが、
同じディレクトリに消したくないファイルがある場合、不可なので以下の方法を
お勧めします。

$ ls -l
total 0
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 *
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 -i
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 ?
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 a
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 b
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 c
$

「?」ファイルを削除する

「rm ?」とするとaとbとcも含めて全部消えてしまいます。
ファイルの数が少ないのであれば、以下のようにrm コマンドに-iオプションをつけて
確認しながら消す方法が簡単です。

$ rm -i ?
rm: remove regular empty file `*'? n
rm: remove regular empty file `?'? y
rm: remove regular empty file `a'? n
rm: remove regular empty file `b'? n
rm: remove regular empty file `c'? n
$ ls -l
total 0
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 *
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 -i
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 a
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 b
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 c
$

これで無事「?」のみ消えました。

もしファイルが多くピンポイントで「?」ファイルのみ消したいのあれば、以下の
ように、rmコマンドのダブルハイフンオプションとシングルクォートを使います。

$ rm -i -- '?'
rm: remove regular empty file `?'? y
$ ls -l
total 0
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 *
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 -i
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 a
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 b
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 c
$

「*」ファイルを削除する

「?」と同様にrmコマンドのダブルハイフンオプションとシングルクォートを使います。

$ rm -i -- '*'
rm: remove regular empty file `*'? y
$ ls -l
total 0
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 -i
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 a
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 b
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 c
$

「-i」ファイルを削除する

「?」と同様にrmコマンドのダブルハイフンオプションとシングルクォートを使います。

$ rm -i -- -i
rm: remove regular empty file `-i'? y
$ ls -l
total 0
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 a
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 b
-rw-rw-r-- 1 foo foo 0 Dec 12 16:20 c
$

確認環境

  • OS: CentOS 5.2
  • bash: 3.2.25
  • rm: 5.97

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-12 (金) 16:52:47 (3568d)