表に基づいてファイルを複製するシェルスクリプト
書類を送るときに,受取人ごとに異なるセットで書類をまとめる必要がある場合のための,ファイルの複製用スクリプトです.
スクリプトを実行すると,マスタディレクトリからデータが複製され,各宛先用のディレクトリが作成されます.
目次
使い方
スクリプトの設定
次の3つのパスを設定しておきます.
- マスタディレクトリ
- 複製先ディレクトリ
- CSV
CSV
これから述べる形式でExcelにて表を作り,UnicodeのCSVで保存します.
- 行見出し:ファイル名
- 列見出し:送り先
セル内改行やコンマ・スペース等が入ったファイル名には対応していません.
内部の各セルはTRUE
かFALSE
の2値を入れて,宛先ごとのファイルの有無を指定します.
宛先A | 宛先B | |
---|---|---|
ファイル1 | TRUE | TRUE |
ファイル2 | FALSE | TRUE |
ファイル3 | FALSE | FALSE |
この例だと,スクリプト実行時には
- 「宛先A」ディレクトリに「ファイル1」が複製される
- 「宛先B」ディレクトリに「ファイル1」と「ファイル2」が複製される
となります.
なお,「宛先A」・「宛先B」ディレクトリは複製先ディレクトリ内に作られます.
備考
- 複製するものはファイルでなく,ディレクトリとすることもできます.この場合,ディレクトリを中身ごとコピーします.
- 複製するファイルがマスタディレクトリの下の階層にある場合,CSVにはマスタディレクトリからの相対パスで記述します.
- CSVがCRLFである場合,LFに置換して上書き保存ます.
TRUE
/FALSE
は内部的にはtrue
/false
に置換して処理します.このため,Excelを使わずにファイルを作成した場合,true
/false
となっていても構いません.
スクリプト
macOSでgsed
コマンドを使ったスクリプトになっています.
Linuxでは適当にsed
にしてご使用ください.
mst_dir="書類を入れているマスタディレクトリのパス" |