今回は、Windows端末の仮想マシン上で、GCP(Google Cloud Platform)内のGCS(Google Cloud Storage)上のファイルを一括で取得し、各ファイルの行数を数えCSVファイルに出力してみたので、その方法について共有する。
前提条件
GCP(Google Cloud Platform)のアカウントを作成し、ログイン済であること。また、GCP上にWindows端末の仮想マシンを作成済であること。その手順は以下を参照のこと。
さらに、以下のようにGCS(Google Cloud Storage)上にファイルを配置済であること。
なお、GCS(Google Cloud Storage)上にファイルを配置する手順については、以下を参照のこと。
やってみたこと
gsutil lsコマンドによるファイルの確認
1) 以下のように、「gsutil ls gs://(バケット名)/ファイルパス」で、GCS(Google Cloud Storage)上のファイルを確認することができる。
なお、ファイルパス中の「*」は、0文字以上の任意の文字列を表す。
2) 以下のように、「gsutil ls -l gs://(バケット名)/ファイルパス」と「-l」オプションを付与すると、GCS(Google Cloud Storage)上のファイルのサイズや更新日時も確認することができる。
gsutil cpコマンドによるファイルのコピー
1) 以下のように、「gsutil cp gs://(バケット名)/ファイルパス .」で、GCS(Google Cloud Storage)上のファイルを、ローカル端末のカレントディレクトリ(.)にコピーすることができる。また、ファイルがコピーされたことの確認は「dir」コマンドで行える。
コピー後の各CSVファイルは、以下の通り。
それぞれ、GCS(Google Cloud Storage)上にコピーしたCSVファイルと同じ内容であることを確認している。
複数ファイルのファイル名と行数の出力
1) 以下のようなbatプログラムを利用することで、カレントディレクトリ上の複数ファイルのファイル名と行数を、一括でCSV形式に出力することができる。
1 2 3 4 5 6 7 8 9 10 11 12 | @echo off REM %%jに、カレントディレクトリのcsvファイルを順次入力 REM /f "usebackq"を使用することで、in句にバッククォート(`)が使用できる for /f "usebackq" %%j in (`dir /B *.csv`) do ( REM ファイル名,を改行コード無しで表示 set /p<NUL=%%j, REM 指定したファイル名の行数を表示 find /C /V "" < %%j ) |
2) 1)のプログラムを、行数を数えるCSVファイルと同じディレクトリに配置し実行すると、以下のように、それぞれのCSVファイル名と行数をカンマ区切りで出力できる。
3) 以下のように、1)のプログラムの実行結果を、別ファイルに出力することもできる。ファイルの出力内容は、「type」コマンドにて確認できる。