
- 作者:斎藤勇哉
- 発売日: 2020/11/30
- メディア: Kindle版
目次
目的
並列でプログラムを実行したい場合、データセットを小分けにしたい場合がある。小分けにする数が多いほど手間がかかる。
そこで、以下を目的とする。
- シェルスクリプトを使ってデータセット(ファイルやフォルダ)を小分けにする
フォルダ構造
フォルダ内にテキストファイルが100個あります。
. ├── 001.txt ├── 002.txt ├── 003.txt ... └── 100.txt
ソースコード
ソースコードは、以下の通りです。folder_n
でいくつのフォルダに分けるかを指定してください。この例では、100個のテキストファイルを10個のフォルダ(batch??)に分けます。
時折、均等にファイルを分けきれない場合がありますがその場合は、最後に生成した「batch??」フォルダに残りのファイルを格納します。
# The number of folder and file folder_n=10 file_n=$(($(ls|wc -l)/$folder_n)) # split files or folders for i in $(seq -w 1 $folder_n);do mkdir batch${i} mv $(ls |grep -v batch |head -n $file_n) batch${i} done # move last files or folders mv $(ls |grep -v batch) batch${folder_n}
実行結果
100個のファイルを10個のフォルダに分けることができました。
. ├── batch01 │ ├── 001.txt │ ├── 002.txt │ ├── 003.txt │ ├── 004.txt │ ├── 005.txt │ ├── 006.txt │ ├── 007.txt │ ├── 008.txt │ ├── 009.txt │ └── 010.txt ├── batch02 ├── batch03 ├── batch04 ├── batch05 ├── batch06 ├── batch07 ├── batch08 ├── batch09 └── batch10 ├── 091.txt ├── 092.txt ├── 093.txt ├── 094.txt ├── 095.txt ├── 096.txt ├── 097.txt ├── 098.txt ├── 099.txt └── 100.txt
頑張れ!、喝!!の代わりにB!ブックマークを押していただけるとただただうれしいです(^^)! ↓

- 作者:斎藤勇哉
- 発売日: 2020/11/30
- メディア: Kindle版