在 shell 脚本中使用 mkdir 批量创建目录

在 shell 脚本中使用 mkdir 批量创建目录

我正在尝试通过 shell 脚本使用 mkdir 批量创建目录,下面是脚本

#!bin/bash
mkdir /tmp/report*/testfolder*/testdoank

当我运行它时出现错误

-bash: ./makefolder.sh: bin/bash: bad interpreter: No such file or directory

怎么了?

答案1

除了 hashbang 中的无效路径(这是导致错误的原因)之外,mkdir命令本身也存在问题。

请记住,glob 只能用于列出现存的文件,因此任何看起来像的东西mkdir /tmp/foo*都会将现有目录作为参数传递给mkdir.如果/tmp/foo1存在,它将被传递给mkdir,然后它会抱怨它已经存在。如果/tmp/foo2 存在,就会不是被传递给mkdir,并且不会被创建。您必须执行其他操作才能创建新目录。

目前尚不清楚您要创建什么目录,但假设您想testdoank在每个匹配的目录下创建一个目录/tmp/report*/testfolder*,那么可能会这样做:

for dir in /tmp/report*/testfolder*; do
    mkdir "$dir"/testdoank
done

答案2

由于您问题的原始格式,您的 shell 声明中似乎缺少“#”字符。然而,实际错误是由于 bash 路径中缺少 / 引起的。

这是在 bash 脚本中确定 shell 的正确方法:

#!/bin/bash

答案3

shell 脚本必须以 开头#!,而不是简单地以 开头!

答案4

使用

mkdir -p 父目录1/子目录1 par2/子目录2/孙子目录2

这将一起创建所有内容,如果需要更复杂的内容请告诉我

相关内容