ファイルを指定ファイル数ごとにサブディレクトリに移動する

  • ファイルを指定されたディレクトリ以下に移動する
  • ファイル数が指定された数を越えないように、サブディレクトリに分割する
#! /bin/sh
# mv_files.sh
# ファイルを別ディレクトリに移動する
# 指定ファイル数ごとにサブディレクトリを作成する

FILE_NUM=30
TO_DIR=/work/mv_test/to_dir
FROM_DIR=/work/mv_test/from_dir

count=`find ${FROM_DIR} -type f | wc -l`
until [ $count -eq 0 ]; do
	if [ $count -le $FILE_NUM ]; then
		n=$count
	else
		n=$FILE_NUM
	fi
	# フォルダ作成
	dir_name=`date "+%Y%m%d%H%M%S%N"`
	mkdir "${TO_DIR}/${dir_name}"

	echo ${n}

	# ファイル移動
	files=`find ${FROM_DIR} -type f | sort | cut -d "
" -f 1-${n}`
	mv ${files} "${TO_DIR}/${dir_name}"

	count=`find ${FROM_DIR} -type f | wc -l`
done