親ディレクトリの更新日付を更新せずにファイルを削除するには

このQ&Aのポイント
  • ファイルを削除する際に親ディレクトリの更新日付を変更せずに削除する方法について知りたい。
  • RHEL5上でのBashスクリプトで、ファイル削除時に親ディレクトリの更新日付を変更せずに削除する方法について教えてください。
  • コマンドのみで解決する方法があれば嬉しいですが、それが無理な場合は一時ファイルへ書き出す方法を教えていただきたい。
回答を見る
  • ベストアンサー

親ディレクトリの更新日付を更新せずにファイルを削除するには

親ディレクトリの更新日付を更新せずにファイルを削除するには 例えば、以下のディレクトリ構成で「aaa.txt」を削除しても親ディレクトリである「AAA」の更新日付が変更されない方法はありますでしょうか? なお、実装はRHEL5上でのBashスクリプトになります。 /home/hoge/AAA/ => 2010/10/01 06:30:00 /home/hoge/AAA/aaa.txt => 2010/10/01 06:30:00 2010/10/03 12:30:00に以下のコマンドを発行 rm /home/hoge/AAA/aaa.txt /home/hoge/AAA/ => 2010/10/03 12:30:00 に更新されてしまいます。 => 2010/10/01 06:30:00 を保持していたいのです。 できればコマンドのみで解決したいと思っています。 コマンド単体で無理なら、rmで削除する前にディレクトリ情報を一時ファイルへ書き出すしかないと思っています。 以上、よろしくお願いします。

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

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

できません。 ディレクトリもシステムからみるとファイルと同じです。 突然のシステムダウンなどに備えてリカバリのために復旧ポイントとして日付時刻を基準にしてますから。

kylico
質問者

お礼

ありがとうございます。 探しても探しても、「できない」ということが載っていなかったので助かりました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

変更しないというのはあり得ませんが、あとでtouchコマンドで任意の日時にセット出来ますので、一旦元のタイムスタンプを保存して、あとで復元すればいいでしょう。 touch -r /home/hoge/AAA /tmp/tmp001 rm /home/hoge/AAA touch -r /tmp/tmp001 /home/hoge/AAA rm /tmp/tmp001

kylico
質問者

お礼

ありがとうございます。 tmpwatchだとファイルを指定して削除できませんが、ディレクトリのタイムスタンプが変更されなかったので、同様のことができないかなと探していました。

関連するQ&A

  • 日付名のディレクトリを世代管理したい

    linuxのコマンドについて教えてください。 あるディレクトリ内で日付のディレクトリを3世代管理しています。 今まではrmで手動削除していたのですが、他のディレクトリでも同様の作業をしたいので、 スクリプトで行おうと考えています。 ただ、ディレクトリ内には様々な名称のフォルダ・ファイルがあり、 上手く日付のディレクトリを取ってこれません。 イメージとしては日付のディクトリだけを取ってきて、ソートし古いのを削除でいけると思うのですが… 詳細は以下です。 同一ディレクトリ内に以下のフォルダがある 20150101 20150103 20150105 20150107 hoge test sample.txt などなど この中で日付のディレクトリの4番目に古いディレクトリを削除したい。 (20150101のディレクトリだけ削除するイメージです) どのようにコマンドを打てばいいか教えていただけますでしょうか? よろしくお願い致します

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

    /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 どのように記述するとよいでしょうか。

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

    こんにちわ。 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です

  • 特定の更新日付のファイルのみを移動するにはどうしたらよいのでしょう

    Linuxのコマンドについてご教授ください。 1.ファイルの移動ですが特定の更新日付のファイルのみを移動するにはどうしたらよいのでしょうか? 2.ファイルを完全に消すにはrm コマンドでファイルは完全に削除されるのでしょうか?(ディスクが満杯に近い時にファイルを削除したいので、完全に削除した いのですが) ご存知でしたらよろしくお願いします。

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

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

  • シェルでファイルの最下行を削除する方法

    シェルでファイルの最下行を削除する方法 シェルで、ファイルaaa.txtの最下行を削除したいです。これを1行で実現したいです。 exには-cってオプションがあるので、ex -c '$d' aaa.txt などと試してみましたがダメでした。 ;(コロン)や&&でつなぐのは、1行ではないって事でお願いします。 >cp aaa.txt tmp && sed '$d' tmp >aaa && rm tmp #こういうのは無しって意味です。 事前にスクリプトや、それ専用のバイナリを用意しておくのも無しでお願いします。なるべく汎用的な どこのUNIXにでもあるようなコマンドで実現したいです。

  • ディレクトリの中身(ファイル)をコピーするコマンドは?(fedora)

    こんにちは。 fedora core5を使っていてCPコマンドで困りました。 cp -R /home/aaa /home/bbb と入力して、aaaというディレクトリの中身のファイルを全てbbbというディレクトリへコピーしようとしたのですが、これではaaaというディレクトリごとbbbへコピーされてしまい、/home/bbb/aaa みたいになってしまいます。 指定したディレクトリの中のファイルを全て別ディレクトリへコピーするときはどのように指定すればよいのでしょうか?

  • 「*.txt」以外の全てのディレクトリ・ファイルを削除したい(Bシェルにて)

    rm -rコマンドを使用して、「*.txt」以外の全てのディレクトリ・ファイルを削除したいのですが、正規表現の使い方が分かりません(それ以外を対象にするという方法が分かりません)。 またできれば、「*.txt」以外のディレクトリ・ファイルが存在しなくてもリターンコードは0が返ってきてほしいです。 どのようにすれば良いのでしょうか? 環境は、SolarisのBシェルです。

  • Windowsのディレクトリを削除できたり、できな

    Windows7で以下の操作をしました。 1. 2階層のディレクトリを作成 (コマンドプロンプト) >D: >md hoge >md hoge\foo 2. エクスプローラーでD:\hoge\fooを開いたままにする 3. コマンドプロンプトでhogeをrdの/Sオプションで削除 rd /Q /S hoge 「ディレクトリが空ではありません。」とメッセージとなり、 ディレクトリhogeを削除されませんでした。 しかし、ディレクトリfooは削除されているので、空ではない です。 PCによって(タイミング?)、3.が成功するのですが、どのような 状況だと削除できないのでしょうか。