元祖若手のプログラミング奮闘記

元祖若手の奮闘記。主にメモ

ファイルを複数コピーするだけのbash

使い方は

cp_files hogehoge.txt

と打つと
同じ階層に
1_hogehoge.txt
2_hogehoge.txt
...
5_hogehoge.txt

と作ってくれます。

cp_files hogehoge.txt 2

と引数にファイル数を指定することもできますが

簡単な処理なので
自分でカスタマイズした方がいいかもしれないです。
あくまで参考程度に

#/bin/bash

function cp_files() {
  if [ -e $1 ]; then
    local first_path="./"
    local array=( `echo $1  | tr -s '/' ' '`)
    local last_index=`expr ${#array[@]}`
    # ここでエラーがでたら 上を `expr ${#array[@]} - 1` に書き換えてください
    local file_name=$array[$last_index]

    if [[ "$1" =~ "^/" ]]; then
      first_path=/
    elif [[ "$1" =~ "^~/" ]]; then
      first_path=~/
    fi

    for i in `seq 1 "${2:=5}"`
    do
      array[last_index]=$i\_$file_name
      echo "cp $1 $first_path$(IFS=/; echo "${array[*]}")"
      cp $1 $first_path$(IFS=/; echo "${array[*]}")
    done
  else
    echo "Not Exists File: $1"
  fi
}