指定サイズ以上のファイルを検索し、ファイル分割するシェルスクリプト

サーバー構築/シェル・バッチ

指定サイズ以上のファイルを検索し、splitを利用して
ファイル分割を行うシェルスクリプトサンプルです。

事前準備:分割用テスト用のファイル作成

ファイル分割のテスト用にDDコマンドで10Mbyteのファイルをddコマンドで作成します。
bsはブロックサイズ、countは繰り返し数を指定します。
「yourfilename」が生成されるファイル名なので任意の名前に変更してください。

dd bs=10M count=1 if=/dev/zero of=yourfilename

指定サイズ以上のファイルを検索してファイル分割するシェルスクリプト

空白を含むファイル名を考慮して取得したファイル名を
“${file}”
のようにダブルクオーテーションで囲んでいます。これが無いと空白が区切り文字として扱われて空白前後でファイル名が2つに分断されてしまうので要注意。

#!/bin/bash

# 検索対象ディレクトリ
search_dir=$1

echo "start split file. target dir is ${search_dir}."

# splitのPrifix用カウンタ
count=0

# 5M以上のファイルを検索
find $search_dir -size +5M | while read file
do
 # 3M単位で分割
  split -b 3M -d --additional-suffix=$count "${file}"
  echo "... split file is ${file}"
  count=$(($count + 1))
  # 分割後、元ファイルを削除
  rm -f -v "${file}"
done

echo "end split file."

以上

タイトルとURLをコピーしました