dポイントプレゼントキャンペーン実施中!

あるパス(例:/home/hogea)の下にあるディレクトリ(フォルダ)を世帯管理したいです。
世帯数は引数でシェルスクリプトに渡して、ディレクトリ(フォルダ)のリネームを行います。
以下はディレクトリをフォルダという意味で使わせて頂きます。
前提としてフォルダ名はあらかじめ決めておく。数字0、1、2…
※0はカレントディレクトリ
(フォルダ名⇒0:カレント 1:カレントより一個古い世帯 2:カレントより2個古い世帯・・・)
・世帯数=フォルダ数の場合(例:2世帯、フォルダも2個(0、1)存在する)一番古いほうのフォルダ(1)を消して、前世帯のフォルダ(0)を1にリネームして、新しいカレントフォルダ0を作る
・世帯数>フォルダ数の場合(例:2世帯、フォルダも1個存在する)古いほうのフォルダ(0)をリネームして、新しいフォルダ(0)を作ります。
・世帯数<フォルダ数の場合(例:2世帯、フォルダも3個存在する)一番古いほうのフォルダと2番目のフォルダを削除して、3番目古いフォルダをリネーム(1)します。新しいフォルダを(0)作ります。
ご経験された方がいらっしゃいましたら参考させて頂きたいと思います。宜しくお願いします。

質問者からの補足コメント

  • そうです。世代数です。誤記で済みません。。。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/09/03 00:19
  • OS はLinux(Redhatサーバ6.3)です。

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/09/04 19:24

A 回答 (4件)

スクリプトを下記サイトに書き込みました。


http://climbi.com/b/7792/0

#管理対象ディレクトリ
TRG_DIR='/home/hoge/goo/dirtest'
のところは、あなたの環境にあわせてください。

#デレクトリプレフィックス
PREFIX='XXX'
のXXXは、各ディレクトリの先頭につく名称です。あなたの環境にあわせてください。
各ディレクトリ名はXXX0,XXX1,XXX2のようになります。
もし、各ディレクトリ名を0,1,2,3のようにしたい場合は
PREFIX=''
としてください。
不明点は補足ください。
    • good
    • 0

エラー処理とかを考えなければ



rm -rf 4
mv 3 4
mv 2 3
mv 1 2
mv 0 1
mkdir 0

で、5世代管理になります。
引数で5を与えたら、上のような順番でコマンドを実行するようなスクリプトを作るだけなので、ループと数値計算で簡単にできると思います。

6個以上ディレクトリがあった場合に余分なのを削除、とか
間に抜けてる番号があったら詰める、とか
いうがあるとちょっと面倒ですが。
    • good
    • 0

OSは何でしょうか?


又、どうしてもシェルスクリプトでなければ、いけない理由はありますか?
perl又はrubyでも良いのであれば、そのスクリプトを提示することはできますが・・・・
この回答への補足あり
    • good
    • 0

もしかして世帯数-->世代数?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!