- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Unixでファイルを削除するとき、「~~を除いて」削除する、は?)
Unixで特定のファイルのみ残して他を削除する方法
このQ&Aのポイント
- Unixでカレントディレクトリ内の特定のファイルのみ残して、他のファイルを一括で削除する方法について教えてください。
- また、ファイルが多くて一つずつ確認するのが面倒です。削除しないファイルを指定する方法も教えてください。
- 初心者ですので、解答は初心者向けでお願いします。
- みんなの回答 (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/消したくないファイル . という方法もありますね。
お礼
おっしゃるとおりにしたら、私の希望どおりにできました。 ありがとうございました。 ご回答を見た私ははじめ、(3)で、 \rm の後の cat ~~ を '(シングルクウォーテーション)で囲ってしまってできなかったのですが、 ご回答どおりにちゃんと ` ` で囲ったらできました。