デフォルトフォルダサブフォルダとファイル名を作成する方法

デフォルトフォルダサブフォルダとファイル名を作成する方法

デフォルトフォルダサブフォルダサブフォルダを作成し、そのサブフォルダにファイルを作成したいシナリオがあります。

私のテキストファイルには次の形式が含まれています。

ABC|A1|B1|A.txt
ABC|BB|CD|AF|JIDS.txt
ABC|BB|CDE|AFD|KL|JI.pdf

上記のファイルはforループ形式で渡される必要があります。最初のレコードを例に挙げましょう。

ABC|A1|B1|A.txt

ABC - >メインフォルダ
A1 - >サブフォルダ
B1 - >サブフォルダ
A.txt - >ファイル

この形式のフォルダを作成する必要があります

ABC{Main folder}-->
                  |=> A1 {Subfolder}-->
                                      |=> B1 {child folder}-->
                                                             |=>A.txt {file inside child folder}

ベストアンサー1

各行に対して|すべての文字を変更して/パス名を形成し、ディレクトリを作成し、パス名の末尾にファイルを生成します。

tr '|' '/' <file |
while IFS= read -r pathname; do
    mkdir -p "$(dirname "$pathname")" &&
    touch "$pathname"
done

結果:

$ tree ABC
ABC
|-- A1
|   `-- B1
|       `-- A.txt
`-- BB
    |-- CD
    |   `-- AF
    |       `-- JIDS.txt
    `-- CDE
        `-- AFD
            `-- KL
                `-- JI.pdf

8 directories, 3 files

説明する:

  • このコマンドは、すべての文字を次のようなものに tr置き換えて生成します。|/
    ABC/A1/B1/A.txt
    ABC/BB/CD/AF/JIDS.txt
    ABC/BB/CDE/AFD/KL/JI.pdf
    
  • 上記の出力はtrループを介して1行ずつ読み取られますwhile。各反復ごとに$pathnameこの出力の行が生成されます。
  • 各反復でdirname "$pathname"ディレクトリセクションを返します$pathname(たとえば、ABC/A1/B1最初の反復の場合)。これはmkdir -p、欠落している可能性があるディレクトリへの呼び出しを作成するために使用されます。中間ディレクトリを生成-pするオプションmkdir
  • touch$pathname作成されたディレクトリから参照されるファイルを実際に生成するために使用されますmkdir
  • との間の文字は、&&(何らかの理由で)作成できないディレクトリにファイルを生成しようとしないことを保証します。mkdirtouchmkdir

おすすめ記事