

以下のようなフォルダ構成があります。

[code]

    /var/tmp/組織コード/log
    
[/code]

このlogディレクトリ配下に0byteのファイルがたくさんあり、それを全て定期的に削除したいと思っています。  
また、同ディレクトリにはそれ以外のファイルやフォルダも入っていて、それらは絶対に削除してはいけないものです。

以下のようなコマンドを考えたのですが、なにか懸念される点はあるでしょうか？

[code]

    find /var/tmp/*/log -size 0c -exec rm {} \;
    
[/code]

いろいろ調べたのですが、Unix系は初心者のため、これで妥当かどうか不安なのです。  
環境はSolaris11で、bashです。  
「組織コード」の部分を固定値にしてコード数分コマンドを書けば確実だとは思いますが、組織コードが増えたり変わるたびにシェルにもメンテが必要になるので、イマイチだと思っています。

詳しい方、ぜひアドバイスしていただけないでしょうか。  
よろしくお願いします。


CC BY-SA 3.0
2017-11-06T13:25:20.343
39341
2017-11-06T22:50:19.247
2017-11-06T15:47:46.733
19110
26072
question
unix solaris
0バイトのファイルたちのみを定期的に削除するシェルスクリプト


まず、SolarisとLinuxは全く異なるオペレーティングシステムです。使用しているオペレーティングシステムがなんであるかを正しく把握しておく必要があります。

次に使用する`find`ですがOS付属のもの以外にGNU
find等の後からインストールされたものが用意されている場合があります。どの`find`を使用するかを把握し、適切なマニュアルを参照する必要があります。不用意な依存関係を排除する意味でも`/usr/bin/find`とパスを明示することでOS付属のものを使用するのも一つの手です。

[code]

    /usr/bin/find /var/tmp/*/log -size 0c -exec rm {} \;
    
[/code]

でおおよそ問題ありません。どのような結果になるかを確認するために

[code]

    /usr/bin/find /var/tmp/*/log -size 0c -exec echo rm {} \;
    
[/code]

のように`echo`を加えて動作確認をするのも一つの手です。

伽語蓮弥さんがコメントにて`-empty`や`-delete`を提案されていますが、[Solarisのfindマニュアル](https://docs.oracle.com/cd/E23824_01/html/821-1461/find-1.html)を参照する限りそのような機能は言及されていないので意図通りには動作しないかもしれません。`+`については使用できます。[GNU
find](https://www.gnu.org/software/findutils/manual/html_mono/find.html)であればいずれの機能も存在します。


CC BY-SA 3.0
2017-11-06T22:50:19.247
39352
2017-11-06T22:50:19.247
4236
39341
answer