Bash

從 csv/txt 文件創建文件夾和子文件夾

  • November 20, 2018

我有一個 excel 文件,我將使用以下數據將其轉換為 csv 或 txt 文件:

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

等等

我需要使用以下語法基於此數據創建文件夾和子文件夾:

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

我嘗試編寫 mkdir -p bash 腳本但沒有成功。

使用您提供的輸入,我可以使用以下命令完成此操作

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

如果不是目前目錄,您可以替換./為您希望目錄樹開始的目錄路徑。

這用於sed將您的輸入行從以下內容轉換:

ALFA ROMEO > 147 > Scheinwerferblenden

到:

ALFA ROMEO/147/Scheinwerferblenden

然後它將此輸出提供給mkdir -p用於創建目錄樹的 while 循環。

$ 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
│       ├── K\303\274hlergrill
│       └── Scheinwerferblenden
├── AUDI
│   └── 80\ B3
│       └── Heckspoiler
└── input

9 directories, 1 file

引用自:https://unix.stackexchange.com/questions/428890