解決済み

Solarisで0byteのファイルのみ削除したい

  • すぐに回答を!
  • 質問No.9620068
  • 閲覧数46
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 1% (10/646)

Solaris11.3環境です。
以下のような構成のディレクトリがあるとします。
----------------------------------------------
/var/tmp/KOTEI/END/
/var/tmp/組織コード/END/
----------------------------------------------

この配下にシステムでファイルが大量に作成されるのですが、その中には0byteのファイルも含まれます。
この0byteファイルが1ヶ月で10万個近く溜まってしまうので、シェルで自動削除しようと考えています。
ファイル名に関わらず、0byteファイルは全て削除します。


以下のようなコマンドを考えたのですが、問題ないかご意見いただけないでしょうか?

----------------------------------------------
find /var/tmp/KOTEI/END -size 0c -exec rm {} \;
find /var/tmp/*/END -size 0c -exec rm {} \;
----------------------------------------------

一番怖いのは、0byteでない、データが含まれているファイルも誤って削除してしまうことです。
また、組織は変更になる可能性があるため、"*"にすることで対応できているか不安です。


是非アドバイスの程、よろしくお願い致します。

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

  • 回答No.1

ベストアンサー率 45% (193/428)

ざっと見それであっているように思えますが、そちらのシステム詳細を知らない外部の人が「大丈夫ですよ」と太鼓判を押すのは結構難しいと思います。ENDフォルダ以下にシンボリックリンクがあって無限ループするかもしれないし、通常ファイルでなくデバイスファイルがあるかもしれないし、ファイル権限がばらばらでエラーメッセージだらけになるかもしれないし…。

そういうわけで、ご自分でチェックするポイント。

1)-execでなく-okにして、しばらく回してみてよさそうなら、execに書き換えて実行する。
2)「組織は変更になる可能性があるため、"*"にすることで対応できているか」は、コマンド時移行前に
echo /var/tmp/*/END
の表示を確認する。

の2点ぐらいでしょうか。

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 62% (261/420)

自分も同様の懸念が。念のため -type f 付けるのと、rm に -f 指定と \; の代りに + の方がいいような気がします。

あと "*" で E2BIG とかの心配あるなら find /var/tmp -type d -name END に対して上記 find, その場合は -exec か xargs に渡すかシェル的にループさせるかでしょうか。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ