You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash从文件名提取内容创建指定嵌套目录

从文件名提取目录并分两步创建嵌套目录

下面是具体实现步骤,全程用Bash内置功能完成,无需额外工具:

1. 定义文件名变量

先把目标文件名赋值给变量,方便后续操作:

filename="assignment_UA_InleidingProgrammeren_Huistaak1-HelloWorld_2019-11-11.tgz"

2. 提取两个目录名

这里提供两种纯Bash的提取方式,选一种即可:

方式一:数组分割(直观易懂)

通过下划线分割文件名成数组,直接取对应位置的元素:

# 按下划线分割字符串为数组
IFS="_" read -ra dir_parts <<< "$filename"
# 数组第3个元素是InleidingProgrammeren(下标从0开始)
dir1="${dir_parts[2]}"
# 数组第4个元素是Huistaak1-HelloWorld
dir2="${dir_parts[3]}"

方式二:参数展开(无需额外命令)

利用Bash的参数展开功能,通过匹配模式截取字符串:

# 去掉开头的"assignment_UA_",再截取第一个下划线前的内容
dir1="${filename#assignment_UA_}"
dir1="${dir1%%_*}"

# 去掉"InleidingProgrammeren_"之前的所有内容,再截取第一个下划线前的内容
dir2="${filename#*_InleidingProgrammeren_}"
dir2="${dir2%%_*}"

3. 分两步创建嵌套目录

严格按照要求分两步操作,禁止直接创建层级:

# 第一步:创建第一层目录
mkdir "$dir1"
# 第二步:在第一层目录下创建第二层目录
mkdir "$dir1/$dir2"

也可以先进入第一层目录再创建,效果一致:

mkdir "$dir1"
cd "$dir1"
mkdir "$dir2"
# 可选:回到原工作目录
cd "$OLDPWD"

完整可运行代码

filename="assignment_UA_InleidingProgrammeren_Huistaak1-HelloWorld_2019-11-11.tgz"

# 用数组分割法提取目录名
IFS="_" read -ra dir_parts <<< "$filename"
dir1="${dir_parts[2]}"
dir2="${dir_parts[3]}"

# 分两步创建目录
mkdir "$dir1"
mkdir "$dir1/$dir2"

内容的提问来源于stack exchange,提问作者FieldyScop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:40:43