フォルダ構造は次のようになります:-
Type1 Type 2
| |
----------------------------------------------------------------------------------------
| | |
subType1 subType2 subType1
| | |
----------------------------------------------------------------------------------------------------------
| | | | | |
typeA typeB typeA typeB typeA typeB
-------------------------------------------------------------------------------------------------------------
| | | | | | | | | | | | | | | | | |
F1 F2 F3 F1 F2 F3 F1 F2 F3 F1 F2 F3 F1 F2 F3 F1 F2 F3
| | | |
| | | |
\/ \/ \/ \/
--------------------------------------------------------------------------------------------------------------
| | | | | | | | | |
black red blue black red black red blue black red
各カラーのフォルダには、次のような画像がいくつか入っています :-(その他多数)
Type1-subType1-typeA-black-dfsdf1.JPG Type1-subType1-typeB-black-one.JPG
Type1-subType1-typeA-red-dfsdf1.JPG Type1-subType1-typeB-red-one.JPG
Type1-subType1-typeA-blue-dfsdf1.JPG Type1-subType1-typeB-black-oh.JPG
Type1-subType1-typeA-black-2dsfsdf.JPG Type1-subType1-typeB-red-oh.JPG
Type1-subType1-typeA-red-2dsfsdf.JPG
Type1-subType1-typeA-blue-2dsfsdf.JPG
Type1-subType1-typeA-black-3asdfdf3.JPG
Type1-subType1-typeA-red-3asdfdf3.JPG
Type1-subType1-typeA-blue-3asdfdf3.JPG
Type1-subType2-typeB-black-SSS.JPG Type2-subType1-typeB-black-5.JPG
Type1-subType2-typeB-red-SSS.JPG Type2-subType1-typeB-black-5.JPG
Type1-subType2-typeB-blue-SSS.JPG Type2-subType1-typeB-black-565.JPG
Type1-subType2-typeB-black-AAA.JPG Type2-subType1-typeB-black-565.JPG
Type1-subType2-typeB-red-AAA.JPG
Type1-subType2-typeB-blue-AAA.JPG
各画像を読み込み、個別のcsvファイルに保存したいので、csvファイルの形式は次のようになります。
フォルダ構造の場合 Type1-subType1-typeA -dfsdf1.JPG into file1.csv
Image name |colour | subcat| subtype | Type1 |
Type1-subType1-typeA-black-dfsdf1.JPG | black | typeA | subType1 | Type1 |
Type1-subType1-typeA-red-dfsdf1.JPG | red | typeA | subType1 | Type1 |
Type1-subType1-typeA-blue-dfsdf1.JPG | blue | typeA | subType1 | Type1 |
フォルダ構造について Type1-subType1-typeA -2dsfsdf.jpg file2.csv
Image name |colour | subcat| subtype | Type1 |
Type1-subType1-typeA-black-2dsfsdf.JPG | black | typeA | subType1 | Type1 |
Type1-subType1-typeA-red-2dsfsdf.JPG | red | typeA | subType1 | Type1 |
Type1-subType1-typeA-blue-2dsfsdf.JPG | blue | typeA | subType1 | Type1
他のフォルダーでも同様です。希望の出力を得るにはどうすればよいですか?
注: 画像名はフォルダー構造を反映します。
これまで、さまざまなフォルダーからすべての画像を 1 つの csv ファイルに読み込みました。出力は次のとおりです。
Image name |colour | subcat| subtype | Type1 |
Type1-subType1-typeA-black-dfsdf1.JPG | black | typeA | subType1 | Type1 |
Type1-subType1-typeA-red-dfsdf1.JPG | red | typeA | subType1 | Type1 |
Type1-subType1-typeA-blue-dfsdf1.JPG | blue | typeA | subType1 | Type1 |
Type1-subType1-typeA-black-2dsfsdf.JPG | black | typeA | subType1 | Type1 |
Type1-subType1-typeA-red-2dsfsdf.JPG | red | typeA | subType1 | Type1 |
Type1-subType1-typeA-blue-2dsfsdf.JPG | blue | typeA | subType1 | Type1 |
Type1-subType1-typeA-black-3asdfdf3.JPG | black | typeA | subType1 | Type1 |
Type1-subType1-typeA-red-3asdfdf3.JPG | red | typeA | subType1 | Type1 |
Type1-subType1-typeA-blue-3asdfdf3.JPG | blue | typeA | subType1 | Type1 |
Type1-subType2-typeB-black-SSS.JPG | black | typeB | subType2 | Type1 |
Type1-subType2-typeB-red-SSS.JPG | red | typeB | subType2 | Type1 |
Type1-subType2-typeB-blue-SSS.JPG | blue | typeB | subType2 | Type1 |
Type1-subType2-typeB-black-AAA.JPG | black | typeB | subType2 | Type1 |
Type1-subType2-typeB-red-AAA.JPG | red | typeB | subType2 | Type1 |
Type1-subType2-typeB-blue-AAA.JPG | blue | typeB | subType2 | Type1 |
希望する出力を達成する方法を教えてください。
答え1
原則として、ls の出力を解析すべきではありませんが、スペースや改行などの「おかしな」名前がないことを前提としています。
ファイル名を解析するにはawkを使用します
ls | awk -F- '{printf "%s,%s,%s,%s,%s,\n",$0,$4,$3,$2,$1}' > file.csv
どこ
-F-
awkに - を区切り文字として使用するように指示する$0
全行$4..$1
-番目のフィールド