读取子目录名称并根据目录名称拆分为子目录

读取子目录名称并根据目录名称拆分为子目录

这可能真的很简单,但我一天中的大部分时间都在忙着做这件事。

问题: 我有几个来自应用程序的文件夹,我需要将它们放入子文件夹中。我将使用分隔符,因为我目前正在手工操作,它是一个很好的视觉指示器,可以指示事情的进展情况。

例子: 目录名称:category---subcat---page

期望的结果:

  • 类别/
    • /子猫/
      • /页/

层次结构中的最后一个目录是相应文件夹内容所在的目录。因此,如果它只是一个---分隔符,则它只会深入一个目录。如果是的话,---...---它会深入两层,依此类推。

编辑

到目前为止我的尝试微弱:

#!/bin/bash

IFS='---'
line="category---subcat---page"

dir=($line)

mkdir ${dir[0]}

答案1

编辑:我原来的答案不适用,所以我重写它以提出稍微不同的答案。

Bash 在扩展变量值时可以执行字符串替换。让我们使用它:

line='category---subcat---page'
mkdir -p "${line//---//}"

该表达式//---//查找字符串的每个实例,并在变量扩展时---将其替换为字符串。 (表达式只会替换第一个实例)/$line/---//

这给出了mkdir -p目录路径 string category/subcat/page,它将被创建为目录树:

category/
         subcat/
                page/

相关内容