csv/txtファイルからフォルダとサブフォルダを作成する

csv/txtファイルからフォルダとサブフォルダを作成する

次のデータを含むcsvファイルまたはtxtファイルに変換したExcelファイルがあります。

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

関連情報