0コメント

【Linux】連番ファイルを一括で作成する。【シェルスクリプト】

こにゃにゃちわ=^_^=

最近記事少ないから小さい事でもこまめに記事にしておこう。

実行結果
スクリーンショット 2020-12-23 005335.png

★留意点
データベースの主キーのように、連番になるように作成(2021001009から20210010010ではなく202101010になるように。)

また、ファイル名を指定して作成するが、拡張子はドットで区別し記述する事。今回はマイクラの関数ファイルのため.mcfunction拡張子で作成。

これらはシェルスクリプトで実行する。実行できない場合はchmod 777 スクリプト名 で動作できる状態にする。
記述↓
スクリーンショット 2020-12-23 005554.png
ぱっと書いたから雑ではあるが、動作はする。
(今回2021001004まで既に書いていたので、NUM=5としているが、普通にNUM=0で設定しておくのがいい。)
NUM=0
while((NUM<=30))do
    if((NUM>=10))then
        touch 20210010${NUM}.mcfunction
    else
        touch 202100100${NUM}.mcfunction
    fi
    NUM=$((NUM+1))
done

少し改変してみるか
###設定
#開始地点(デフォルトは1)
NUM=1
#作るファイルの数 ※999個まで対応
MAX=30
#主キー ※001-999の数字を末尾に入れる為、その直前までを記述
KEY='2021001'
#拡張子
EXT='mcfunction'

#####ココカラ下は触れない##############
while(( NUM <=${MAX} ))do
    if(( NUM <=0 ))then
        echo'NUMは1以上にして下さい。'
        NUM=$(( MAX +1 ))
    elif(( NUM >= MAX ))then
        echo'NUMはMAX未満にして下さい。'
        NUM=$(( MAX +1 ))
    elif(( MAX >=1000 ))then
        echo'作るファイルの数が多すぎます。1000未満で設定してください。'
        NUM=$(( MAX +1 ))
    elif(( NUM >=100&& NUM <=${MAX} ))then
        touch ${KEY}${NUM}.$EXT
    elif(( NUM >=10&& NUM <=${MAX} ))then
        touch "${KEY}0${NUM}.$EXT"
    elif(( NUM >=1&& NUM <=${MAX} ))then
        touch "${KEY}00${NUM}.$EXT"
    fi

    NUM=$(( NUM +1 ))
    done
exit 0
上記スクリプトはコピペして、説明の通り数字を置き換えて実行するだけで連番ファイルが作れます。はい。
開始地点は、1なら(主キー)001から始まり、123なら(主キー)123から始まります。124,125,126...てな感じで。
KEYはファイル名の連番の直前に入る文字列だけど、aとかでも入れておいた方が良いと思う。
EXTは拡張子。テキストファイルならtxtと入力すればok

てな感じ。


今回久々に記述してみて、思ったのが。
C言語とはやはり記述方法が違う。else ifがelifに省略されたり、変数の型はほぼ関係なく、文字列なら' 'で囲い、変数とかも無効化するなら" "で囲い、コマンドを実行するなら` `で囲う、という微妙な違いだとか、
whileならdoで始まりdoneで終わる
ifならthenで始まりfiで終わる

四則演算は$(( ))で行い、条件式は汎用型は[ ]で、-eqとかのが覚えきれず不等号で比較演算子てくれるこっちを個人的に使っているという点では条件を(( A 演算子 B))として入力したり。


細かい部分がC言語とは異なる。でもある程度は組める。そんな感じ。


久々に書いてみて完全に記述方法を忘れており、調べ調べ一時間くらいかけて改良版が完成しました()

スクリーンショット 2020-12-23 015424.png

初心者なのでこの程度しかまだ書けないですが。

精進します()

シェルスクリプトの可能性は広がったと思う猫でした。

(^o^)ノ < おやすみー



追記:途中でシェルスクリプトを実行するための権限をchmod 777で設定すると記述しているが、これは危険なので必要に応じて設定してください。念のため追記

追記2:chmod 777はフルアクセス権限を与えるコマンドです。場合によって権限を制限しないとセキュリティ上問題があるので、各自調べてください。これによる攻撃行為が発生しても一切の責任を負いかねます。

この記事へのコメント