これは本当に簡単かもしれませんが、私は一日のほとんどをこの仕事をしながら過ごします。
質問: アプリケーションには複数のフォルダがあり、それらをサブフォルダに配置する必要があります。現在、これは手動で行われており、状況がどのように進行しているかについての優れた視覚インジケータであるため、区切り文字を使用します。
例:
ディレクトリ名:category---subcat---page
望ましい結果:
- カテゴリ/
- /子/
- /ページ/
- /子/
階層の最後のディレクトリは、そのフォルダの内容を含むディレクトリです。したがって、区切り文字の場合は、---
1つのディレクトリの深さに移動します。そうで---...---
あれば、2つのレベルの深さに進みます。
編集する
これまで私の試みは弱いです。
#!/bin/bash
IFS='---'
line="category---subcat---page"
dir=($line)
mkdir ${dir[0]}
ベストアンサー1
編集:元の回答が適用されなかったため、少し異なる回答を見つけるために書き直しました。
Bashは変数値を拡張するときに文字列置換を実行できます。それを試してみましょう:
line='category---subcat---page'
mkdir -p "${line//---//}"
この式は、文字列のすべてのインスタンスを検索し、//---//
変数が展開されると---
それを文字列に置き換えます。 (式は最初のインスタンスのみを置き換えます)/
$line
/---//
これは、ディレクトリツリーとして生成されるmkdir -p
ディレクトリパス文字列を提供します。category/subcat/page
category/
subcat/
page/