匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

シェルスクリプトで以下のことがしたいです。

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

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2016/08/31 09:16:40
  • 終了:2016/09/07 09:20:03
匿名質問者

質問者から

匿名質問者2016/08/31 12:10:26

・世帯数>フォルダ数の場合(例:2世帯、フォルダも1個存在する)古いほうのフォルダ(0)をリネームして、新しいフォルダ(0)を作ります。
・世帯数<フォルダ数の場合(例:2世帯、フォルダも3個存在する)一番古いほうのフォルダと2番目のフォルダを削除して、3番目古いフォルダをリネーム(1)します。新しいフォルダを(0)作ります。
ご経験された方がいらっしゃいましたら参考させて頂きたいと思います。宜しくお願いします。

回答(1件)

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2016/08/31 17:38:57

もしかして世代管理,つまりバックアップをとりたい,ということでしょうか?

そうであれば 2世代分バックアップするなら,ディレクトリを dir0とdir1とすると

[ -d dir1 ] && rm -rf dir1
[ -d dir0 ] && mv dir0 dir1
mkdir dir0

3世代分なら,ディレクトリを dir0,dir1,dir2として

[ -d dir2 ] && rm -rf dir2
[ -d dir1 ] && mv dir1 dir2
[ -d dir0 ] && mv dir0 dir1
mkdir dir0

一般化すると,N世代になり,ディレクトリを dir0, dir1,,,,dir(N-1)となるので

たとえばN=10の場合は

N=10
N=$(($N - 1))
[ -d dir$N ] && rm -rf $dir$N
while [ $N -ge 0 ]; do
    [ -d dir$N ] && mv dir$N dir$(($N + 1))
    N=$(($N - 1))
done
mkdir dir0

となります

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません