Извлечь имена файлов со структурой каталогов в 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-ое поле

Связанный контент