Extrahieren Sie Dateinamen mit Verzeichnisstruktur in eine CSV-Datei (separate CSV-Datei für jeden Bildnamen).

Extrahieren Sie Dateinamen mit Verzeichnisstruktur in eine CSV-Datei (separate CSV-Datei für jeden Bildnamen).

Ich habe eine Ordnerstruktur wie: -

                                            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

In jedem Farbordner sind einige Bilder wie dieses :-(und viele mehr)

    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   

Ich möchte jedes Bild lesen und in einer einzelnen CSV-Datei speichern. Das CSV-Dateiformat lautet also:
Für die Ordnerstruktur 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 | 

Für die Ordnerstruktur 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 

Und so weiter auch für andere Ordner. Wie kann ich die gewünschte Ausgabe erhalten?

Hinweis: Der Bildname spiegelt die Ordnerstruktur wider.

Bisher habe ich alle Bilder aus verschiedenen Ordnern in eine einzige CSV-Datei eingelesen. Hier ist meine Ausgabe:

            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 | 

Bitte geben Sie mir Tipps, wie ich das gewünschte Ergebnis erzielen kann.

Antwort1

grundsätzlich sollten Sie die Ausgabe von ls nicht analysieren, vorausgesetzt, Sie haben keine „komischen“ Namen (wie Leerzeichen oder Zeilenumbrüche).

Ich würde awk verwenden, um den Dateinamen zu analysieren

ls | awk -F- '{printf "%s,%s,%s,%s,%s,\n",$0,$4,$3,$2,$1}' > file.csv

Wo

  • -F-weisen Sie awk an, - als Trennzeichen zu verwenden
  • $0ganze Linie
  • $4..$1-te Feld

verwandte Informationen