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

如何按文本文件每行内容创建文件夹及嵌套目录?

按文件每行内容创建文件夹(含嵌套目录)

首先得明确:你当前写的代码不可行,因为它完全没用到文件里的行内容,而是用循环的索引值($i)当文件夹名,而且循环范围还多了一个(比如文件有3行,会创建0、1、2、3这4个文件夹),完全不符合“按每行内容创建”的需求,得彻底调整写法。

一、创建单级文件夹(每行对应一个独立文件夹)

如果你的文件每行是单个文件夹名称(比如每行是docs、images这种),可以用while read循环来逐行读取内容并创建文件夹,这样能正确处理含空格、特殊字符的名称:

# 读取filename文件的每一行,创建对应文件夹
while IFS= read -r line; do
  # 跳过空行(可选,根据需求调整)
  if [ -n "$line" ]; then
    mkdir -- "$line"
  fi
done < filename

这里的细节很重要:

  • IFS=:保留行首/行尾的空格,避免被自动截断
  • read -r:禁止反斜杠被转义,保证行内容原样读取
  • --:防止以-开头的文件夹名称被当成mkdir的命令选项
  • 加if [ -n "$line" ]:跳过文件里的空行,避免创建空名称的文件夹

二、创建嵌套目录(每行是完整的嵌套路径)

如果你的文件每行是类似a/b/c、project/src/utils这种嵌套路径,只需要给mkdir加-p参数(自动创建所有不存在的父目录)即可:

# 读取每行的嵌套路径,创建完整的目录结构
while IFS= read -r line; do
  if [ -n "$line" ]; then
    mkdir -p -- "$line"
  fi
done < filename

比如文件里有一行foo/bar/baz,执行后会自动创建foo、foo/bar、foo/bar/baz这三级目录,即使父目录原本不存在。

三、额外注意事项

  • 如果怕重复创建已存在的文件夹导致报错,可以用mkdir -p(不管目录是否存在都不会报错),或者加判断:if [ ! -d "$line" ]; then mkdir -- "$line"; fi
  • 确保你对目标路径(比如你代码里的/PATH/)有写入权限,否则会提示权限错误
  • 如果文件里的行包含特殊字符(比如&、*、空格),一定要用双引号包裹$line,否则会被shell解析成其他含义
  • 如果你的文件是Windows格式的换行(\r\n),可以先用dos2unix filename转成Unix格式,避免读取到奇怪的字符

内容的提问来源于stack exchange,提问作者Hossein Najafzade Rahaghi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:25:46