今回は、Linux端末の仮想マシン上で、GCP(Google Cloud Platform)内のGCS(Google Cloud Storage)上のファイルを一括で取得し、各ファイルの行数を数えCSVファイルに出力してみたので、その方法について共有する。
前提条件
GCP(Google Cloud Platform)のアカウントを作成し、ログイン済であること。また、GCP上にLinux端末の仮想マシンを作成済であること。その手順は以下を参照のこと。
さらに、以下のようにGCS(Google Cloud Storage)上にファイルを配置済であること。
なお、GCS(Google Cloud Storage)上にファイルを配置する手順については、以下を参照のこと。
やってみたこと
gsutil lsコマンドによるファイルの確認
1) Windowsの場合と同様に、以下のように、「gsutil ls gs://(バケット名)/ファイルパス」で、GCS(Google Cloud Storage)上のファイルを確認することができる。
なお、ファイルパス中の「*」は、0文字以上の任意の文字列を表す。
2) Windowsの場合と同様に、以下のように、「gsutil ls -l gs://(バケット名)/ファイルパス」と「-l」オプションを付与すると、GCS(Google Cloud Storage)上のファイルのサイズや更新日時も確認することができる。
gsutil cpコマンドによるファイルのコピー
1) Windowsの場合と同様に、以下のように、「gsutil cp gs://(バケット名)/ファイルパス .」で、GCS(Google Cloud Storage)上のファイルを、ローカル端末のカレントディレクトリ(.)にコピーすることができる。
また、ファイルがコピーされたことの確認は「ls -l」コマンドで行える。
コピー後の各CSVファイルは、以下のように、「cat」コマンドで確認できる。
それぞれ、GCS(Google Cloud Storage)上にコピーしたCSVファイルと同じ内容であることを確認している。
複数ファイルのファイル名と行数の出力
1) 以下のようなshellプログラムを利用することで、カレントディレクトリ上の複数ファイルのファイル名と行数を、一括でCSV形式に出力することができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #/bin/bash # カレントディレクトリのcsvファイルを順次読み込む # fileに、読み込んだCSVファイル名が設定される for file in *.csv; do # 区切り文字を設定 col_sep="," # 読み込んだcsvファイルの行数を設定 line_cnt=`cat $file | wc -l` # 読み込んだcsvファイル名と行数を出力 echo $file$col_sep$line_cnt done |
2) 1)のプログラムを、行数を数えるCSVファイルと同じディレクトリに配置し実行すると、以下のように、それぞれのCSVファイル名と行数をカンマ区切りで出力できる。
3) 以下のように、1)のプログラムの実行結果を、別ファイルに出力することもできる。ファイルの出力内容は、「cat」コマンドにて確認できる。