• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Unixでファイルを削除するとき、「~~を除いて」削除する、は?)

Unixで特定のファイルのみ残して他を削除する方法

このQ&Aのポイント
  • Unixでカレントディレクトリ内の特定のファイルのみ残して、他のファイルを一括で削除する方法について教えてください。
  • また、ファイルが多くて一つずつ確認するのが面倒です。削除しないファイルを指定する方法も教えてください。
  • 初心者ですので、解答は初心者向けでお願いします。

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

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

* などのワイルドカード展開は 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 ~~ を '(シングルクウォーテーション)で囲ってしまってできなかったのですが、 ご回答どおりにちゃんと ` ` で囲ったらできました。

関連するQ&A

専門家に質問してみよう