サブディレクトリ名を読み込み、ディレクトリ名に基づいてサブディレクトリに分割

サブディレクトリ名を読み込み、ディレクトリ名に基づいてサブディレクトリに分割

これは本当に簡単かもしれませんが、私は一日のほとんどをこの仕事をしながら過ごします。

質問: アプリケーションには複数のフォルダがあり、それらをサブフォルダに配置する必要があります。現在、これは手動で行われており、状況がどのように進行しているかについての優れた視覚インジケータであるため、区切り文字を使用します。

例: ディレクトリ名: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/

おすすめ記事