这可能真的很简单,但我一天中的大部分时间都在忙着做这件事。
问题: 我有几个来自应用程序的文件夹,我需要将它们放入子文件夹中。我将使用分隔符,因为我目前正在手工操作,它是一个很好的视觉指示器,可以指示事情的进展情况。
例子:
目录名称: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/