csvファイルから取得した値を名前にしたディレクトリをたくさん作る
はじめに
csvファイルから値を取得し、それらを名前にしたディレクトリをたくさん作るための、Linuxコマンドの使用例です。
タイトルに「たくさん作る」とありますが、今回は10行だけのサンプルデータを使っています。
3項目目にoccupationとありますが、この値を名前にしたディレクトリを作成しました。
コマンド実行前のディレクトリの構成
最初はdataディレクトリにcsvファイルが1つあるだけです。
$ tree
.
└── data
└── members.csv
CSVファイルの中身
csvファイルの中身は次の通りです。名前、年齢、職業が格納されています。
scientist, engineerのみ複数現れ、他のoccupationはそれぞれ1度のみ現れます。
name,age,occupation
akira,23,scientist
hana,31,chemist
taro,56,engineer
jun,30,engineer
takeshi,40,programmer
tsuru,28,statistician
jiro,42,engineer
suzuki,65,scientist
mitsu,34,doctor
chika,25,student
コマンド作る際の方針
- 1行目のタイトルは使わない。
- scientistやengineerなど複数ある場合は複数作らず、1つだけ作成する。
このようなコマンドを作った
cat data/members.csv | awk -F',' '{if(NR>1)print $3}' | sort | uniq | xargs -I{} mkdir ./{}
- catでcsvファイルの中身を読み込みます。
- awkで1行目をスキップし、3番目の値をプリントします。
- sortで整列します。
- uniqで複数ある値を1つにします。
- xargsで標準入力の値を使ってmkdirによりディレクトリを作成します。-Iオプションで標準入力の値に置き換える文字列を指定します。
コマンド実行後のディレクトリの構成
treeを使ってディレクトリ構成を見てみます。
$ tree
.
├── chemist
├── data
│ └── members.csv
├── doctor
├── engineer
├── programmer
├── scientist
├── statistician
└── student
コマンドが正しく動いていることが分かりました。
おわりに
csvファイルから取得した値を名前にしたディレクトリをたくさん作りました。
基本的なコマンドだけで作成できました。
Author And Source
この問題について(csvファイルから取得した値を名前にしたディレクトリをたくさん作る), 我々は、より多くの情報をここで見つけました https://qiita.com/koichifukushima/items/b536ddd16b2227078518著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .