OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Unixでファイルを削除するとき、「~~を除いて」削除する、は?

  • 暇なときにでも
  • 質問No.117571
  • 閲覧数221
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

 Unixで、カレントディレクトリにたくさんのファイルがあって、
そのうちの一つとか二つのファイルのみ残して あとはみんな削除したいとき、
どのようにすればよいのでしょうか。

rm *
とすると、みんな消えてしまいます。

もっとも、私の環境では .cshrcに
alias rm 'rm -i' 
と書いてあるため、削除するときにいちいち確認を取ってきます。
そのときに 削除しないものには n(no)と入力すればよいのですが、
ファイルがたくさんあると いちいち見るのも面倒になって、
y(yes)をどんどん入力してしまって削除してしまう恐れがあります。

コマンドを入力するときに 削除しないものを指定できないでしょうか。

Unixの初級者なので、そのおつもりでご解答いただくとうれしいのですが。。。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル12

ベストアンサー率 40% (237/589)

* などのワイルドカード展開は rm ではなくシェルでやっているので、
rm コマンドで簡単に実現する方法はありません。
私がやっている方法は、以下のようなものです。

(1) ls * > /tmp/filelist で、カレントディレクトリのファイル名一覧を
  /tmp/filelist に作る。
(2) vi /tmp/filelist で、削除したくないファイル名の行を消す。
(3) rm `cat /tmp/filelist` を実行する。

これで、お望みのことができます。
alias rm 'rm -i' しているとファイル名の確認を取ってくるので、これを
避けるには、(3) で \rm `cat /tmp/filelist` のように、rm の前に \ を
つけると alias が無効になり、一気に消すことができます。

もっと安直には、

(1) mv 消したくないファイル /tmp
(2) \rm *
(3) mv /tmp/消したくないファイル .

という方法もありますね。
お礼コメント
noname#836

おっしゃるとおりにしたら、私の希望どおりにできました。
ありがとうございました。

ご回答を見た私ははじめ、(3)で、
\rm の後の cat ~~ を '(シングルクウォーテーション)で囲ってしまってできなかったのですが、
ご回答どおりにちゃんと ` ` で囲ったらできました。
投稿日時 - 2001-08-12 12:07:37
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ