|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#!/bin/csh # zz:xx の対応(8対) set maps = ( \ a0:KI \ a1:KF \ a2:KO \ a3:KK \ a4:KG \ a5:KS \ ae:KN \ af:KM \ ) set srcDir = "/path/to/input" set baseDst = "/転送先フォルダ" foreach m ($maps) set zz = `echo $m | cut -d: -f1` set xx = `echo $m | cut -d: -f2` foreach file ($srcDir/hoge_${zz}_*.csv) if (-e "$file") then set dest = "$baseDst/DV${xx}/data" mv "$file" "$dest/" endif end end foreach m ($maps) set zz = `echo $m | cut -d: -f1` set xx = `echo $m | cut -d: -f2` set files = ( $srcDir/hoge_${zz}_*.csv ) if ( $#files > 0 ) then set dest = "$baseDst/DV${xx}/data" foreach file ($files) mv "$file" "$dest/" end endif end |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#!/bin/csh # --- 設定セクション --- set srcDir = "/path/to/input" set baseDst = "/転送先フォルダ" # マッピング定義(zz.xx 形式) # ドット区切りにすることで csh 組み込みの :r, :e 修飾子を利用可能にする set maps = ( \ a0.KI \ a1.KF \ a2.KO \ a3.KK \ a4.KG \ a5.KS \ ae.KN \ af.KM \ ) foreach m ($maps) # 外部コマンド(cutなど)を一切使わず、シェル内部メモリで値を抽出 set zz = $m:r set xx = $m:e # ワイルドカード展開の結果をリストとして保持 set targets = ($srcDir/hoge_${zz}_*.csv) # 【重要】-e演算子は複数引数を扱えないため、第1要素のみを判定対象とする。 # 展開失敗時(nonomatch)は、第1要素がパターンのままとなり -e は偽を返す。 if ( ! -e "$targets[1]" ) continue # 展開成功時のみ、リスト全体を一括移動 mv $targets "$baseDst/DV${xx}/data/" end |