將具有目錄結構的檔案名稱提取到 CSV 檔案中(每個圖像名稱都有單獨的 csv 檔案)

將具有目錄結構的檔案名稱提取到 CSV 檔案中(每個圖像名稱都有單獨的 csv 檔案)

我的資料夾結構如下:-

                                            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 

其他資料夾也是如此。

注意:圖像名稱反映了資料夾結構。

到目前為止,我已將不同資料夾中的所有圖像讀取到單一 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第-個字段

相關內容