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

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

ysk6406の回答

  • ベストアンサー
  • 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

  • サブディレクトリも含む特定のファイルを削除したい

    UNIX系のコマンドで教えてください カレントディレクトリとそれ以下の階層全てのサブフォルダ内にある*.jpgというファイルを削除するにはどうすればいいでしょうか? よろしくお願いします

  • ファイル削除について(unix)

    あるディレクトリに、ファイル名.YYYYMMDDHHMMSSという形式で保存されたファイルがあるとします。 例: aaa.20051214100000 aaa.20051215100000 aaa.20051216100000 … aaa.20060114100000 aaa.20060115100000 aaa.20060116100000 で、実行日の1ヶ月以前のファイル(例ではaaa.20051216100000以前)を削除するunixシェルを作りたいのです。 1ヶ月前の日付自体はdateコマンドで求めて、その日だけのファイル削除はできると思うのですが、1ヶ月より前のファイルを削除するにはどうしたらいいのでしょうか? とりあえず、思いついたソースです。 #!/bin/ksh #------------------------------------------------------------------------------ YY=`date +"%Y"` MM=`date +"%m"` DD=`date +"%d"` MM=`expr $MM - 1` if [ $MM = "0" ] then YY=`expr $YY - 1` $MM=12 fi rm -f aaa.$YY$MM$DD*

  • 初心者ですが。ディレクトリの削除

    unixであるディレクトリ以下のファイルを全て削除したい場合はどのコマンドを使えばいいですか?rm -rf ディレクトリ名すると、1つ1つ削除するか確認を求めてきます。この確認を省く方法はありますでしょうか。宜しくお願いします。

  • RHL7で多数のファイル削除(rm)方法

    Red Hat Linux7でHD容量が足りなくなったので、新しいHDをフォーマット後あるディレクトリにマウントしました。 この後、古いHD内のファイルを全て削除しようと思い、rm -r [ディレクトリ名]を実行しましたが、消すファイルを聞いてきて、いちいちy、リターンを押さなければなりません。数が多いので面倒です。 良い方法を教えてください。 rm -rは強制削除だとおもうのですが‥‥。 削除コマンドなので、ビビッています。 RHL7の素は、できるlinuxサーバという本に添付されていたものです。 よろしくお願いします。

  • シェルスクリプト内のcdで、カレントディレクトリを変えるには?

    シェルスクリプト内のcdコマンドで、カレントディレクトリを変えるにはどうしたらいいか?をどうか教えて下さい。 MS-DOSのバッチファイル内で"cd XXXXX"と書き実行した時の動作を、UNIX(CygWin)環境でも行いたいです。 が、シェルスクリプトは(サブシェルで動く為)カレントディレクトリが変わってくれません。aliasコマンド等でいろいろ実験しましたが、DOSバッチファイルのように「バッチファイル単体でディレクトリ移動が出来る方法」を探し出せませんでした。 極めて初歩的とは存じますが、どうか宜しくお願い致します。

  • aliasの設定

    UNIX上で自分のローカルディレクトリ上で作業をしていて、長いコマンドをaliasで設定したいのですが、 .cshrcをコピー自分のローカルディレクトリに別ファイル名 .aaa などとコピーして書きかました。 この.aaaを有効とさせたい場合どうすればよいのでしょうか?

  • 古いファイルを削除したいのですが。。。

    こんにちわ。 findコマンドを使って、あるディレクトリにどんどんできるファイルの古くなったものを削除したいのです。 例えば、7日以上更新がないものを削除したく、 # find /hoge/backup -mtime +7 -a -type f -exec rm -f {} \; というコマンドを実行してみましたが、結果は、削除されず残ったままで、しかも一部のファイルが元々古い日付だったものが、実行日時でタイムスタンプが書き変わってしまってます。 シェルはbashでもcshで試しても同じでした。 どうすればよいかご教示お願いできますでしょうか?

  • zshで名前に半角スペースを含むファイルの削除

    test space.txt という名前のファイルを削除したい時 aaa="test space.txt" rm $(echo ${aaa}|awk '{print "\""$0"\""}') とやってダブルクォートでくくっても、 rm: "test: No such file or directory rm: space.txt": No such file or directory となって、"test と space.txt" で分かれてしまいます。 どうすれば良いのでしょうか>< zshです

  • GCCにてディレクトリ・ファイル操作等のできるPGを作成したい。

    GCCコンパイラを使い、UNIX上のディレクトリ・ファイルの操作 また、各ファイルシステムの総容量・空容量等の確認を行いたいと思っ ているのですが、以下の処理を実行する関数を見つけることができませ んでした。 ----------------------------------------------------------------------------- ディレクトリの移動                  (chdir コマンド相当) ディレクトリ内のファイル・サブディレクトリ一覧の取得 (dir/ls コマンド相当) ファイル日付の取得                  (ls -l コマンド相当) ディスク空き容量等確認                 (df -k コマンド相当) ファイルの削除                    (rm  コマンド相当) ----------------------------------------------------------------------------- もし、ご存知の方がいらっいましたら、教えて頂きたく存じます。 また、GCCを使ったUNIXシステム管理プログラミングについて、解説されている 書籍・サイト等を御存知でしたら教えていただきたく思います。

  • Kシェルでファイル削除処理

    kシェルで、ファイルを1行ずつ読み込み、記述されたファイルを削除する処理を作成したいのですが、ワイルドカード指定にも対応したいです。最初はrm -r で実施しようとしたのですが、これだとディレクトリも削除されてしまうので使えませんでした。rm -fでやった場合も削除に失敗した場合のエラーハンドリングが難しく困っています・・・。 何か良い方法はないでしょうか? lsコマンドの出力結果を再度読み込み、ファイルだったら消すという方法ぐらいしか思い浮かばず・・・。