次のデータを含む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