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

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

  • aliasの設定

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

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

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

  • 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です

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

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

  • ディレクトリ削除の DOS コマンド

    Windows XP SP2 ログオン・ログオフスクリプトでテンポラリディレクトリ内の掃除をしたいと思っています(ログオフ時に全削除) ディレクトリ内のファイルは del /F /Q /S *.* で消せるのですが、ディレクトリが消せません。ディレクトリを削除するコマンド rd はワイルドカードが使えないようです。 Unix のように rm -r ./* とかって無いのでしょうか?

  • ファイルを検索して削除する

    /www 以下のディレクトリーに aaa.txt というファイルが存在する場合、 そのファイルが存在するディレクトリー内の全ての ***.txt を削除したいです。 find /www -name aaa.txt | xargs rm だと、aaa.txt だけの削除になります。 以下も考えましたが、これだと検索対象ディレクトリーが /www だけになります。 #!/bin/bash if test -e /www/aaa.txt then rm -f /www/*.txt fi どのように記述するとよいでしょうか。

  • (サーバ・UNIX)は、ひとつのディレクトリに何ファイルまでおいても良いですか?

    (サーバ・UNIX)は、ひとつのディレクトリに何ファイルまでおいても良いですか? 私は、Windowsしか使ったことが無いので、感覚というものが良く分からないのですが、 通常、Windowsの場合、1つのディレクトリに1000ファイル以上置くと動作が重くなります。 10000を超えるとパソコンがフリーズしてしまいます(Win98)。 そのため、1ディレクトリには1000程度にするよう、心がけています。 しかし、サーバの場合は、大抵、UNIXを使っているため、ファイル管理が非常に優秀だと聞きます。 ということは、1つのディレクトリにいくら置いても問題ないということでしょうか? レンタルサーバの空き容量がまだ、1900Mもあるため、CGIの練習も兼ねて、 時間列で、画像ファイル(ライブカメラ)をどんどん記録することを考えています。 たくさんのディレクトリを作って、時間や日付で分けることも考えたのですが、 ディレクトリ分けしても、しなくても呼び出し速度が殆ど換わらないのであれば、 1つのディレクトリにおきたいと思っています。 ファイル情報の取得など、1ディレクトリですととても簡単にできるので・・・ そして、容量が近くなったら、古いものから順番に削除していく。 or 日付の古いものを削除していく。 なお、転送容量にはは問題はなかったのですが、サーバに過度の負担をかけることは禁止でした。 ちなみに、呼び出す時は、そのディレクトリ中から画像を30枚ほどランダムに選んで表示する予定です。 画像のサイズは極小の2KB程度です。 以上の作成を考えております。そこで、長くなりましたが、ファイル管理についてご返答、 何卒、宜しくお願い致します。

  • hspのファイルコピーと削除

    HSPでファイルコピー・削除をするとき、fxcopyやdeleteがありますがカレントディレクトリ以外にあるファイルをコピー・削除するときはどのように書けばいいのでしょうか?