Crie pastas e subpastas a partir do arquivo csv / txt

1

Eu tenho um arquivo excel que eu vou converter para o arquivo csv ou txt com os seguintes dados:

ALFA ROMEO > 147 > Scheinwerferblenden
ALFA ROMEO > 156 > Scheinwerferblenden
ALFA ROMEO > 156 > Kühlergrill
AUDI > 80 B3 > Heckspoiler
.
.

e assim por diante

Eu preciso criar pastas e subpastas com base nesses dados com a seguinte sintaxe:

├───ALFA ROMEO
│            ├───147
│            │     └───Scheinwerferblenden
│            └───156
│                  ├───Scheinwerferblenden
│                  └───Kühlergrill        
│
└───AUDI
       └───80 B3
               └───Heckspoiler

Eu tentei escrever mkdir -p bash scripts mas sem sucesso.

    
por Helmut54321 08.03.2018 / 02:06

2 respostas

0

Com a entrada que você forneceu, consegui fazer isso com o seguinte comando

while read -r dir; do mkdir -p ./"$dir"; done< <(sed 's@ > @/@g' input)

Você pode substituir ./ pelo caminho do diretório no qual gostaria que a árvore de diretórios fosse iniciada, se não o diretório atual.

Isso usa sed para converter suas linhas de entrada de algo como:

ALFA ROMEO > 147 > Scheinwerferblenden

para:

ALFA ROMEO/147/Scheinwerferblenden

Em seguida, ele alimenta essa saída para um loop while que usa mkdir -p para criar a árvore de diretórios.

$ cat input
ALFA ROMEO > 147 > Scheinwerferblenden
ALFA ROMEO > 156 > Scheinwerferblenden
ALFA ROMEO > 156 > Kühlergrill
AUDI > 80 B3 > Heckspoiler
$ while read -r dir; do mkdir -p ./"$dir"; done< <(sed 's@ > @/@g' input)
$ tree
.
├── ALFA\ ROMEO
│   ├── 147
│   │   └── Scheinwerferblenden
│   └── 156
│       ├── K34hlergrill
│       └── Scheinwerferblenden
├── AUDI
│   └── 80\ B3
│       └── Heckspoiler
└── input

9 directories, 1 file
    
por 08.03.2018 / 02:16
0

Tente isso, com base em sua opinião (usando expansões de parâmetro bash ):

while IFS=">" read -r c1 c2 c3; do
    c2=${c2% }
    mkdir -p "${c1% }/${c2# }/${c3# }"
done < file-or-input

Saída:

$ tree AUDI ALFA\ ROMEO/
AUDI
└── 80 B3
    └── Heckspoiler
ALFA ROMEO/
├── 147
│   └── Scheinwerferblenden
└── 156
    ├── Kühlergrill
    └── Scheinwerferblenden

7 directories, 0 files
    
por 08.03.2018 / 02:18