从 csv/txt 文件创建文件夹和子文件夹

从 csv/txt 文件创建文件夹和子文件夹

我有一个 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 脚本但没有成功。

答案1

根据您提供的输入,我可以使用以下命令来完成此操作

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

答案2

根据您的输入尝试此操作(使用bash 参数扩展):

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

输出 :

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

7 directories, 0 files

相关内容