在 Linux 中制作嵌套目录

当父目录不存在时创建嵌套目录是……不可能的。 但这也不意味着您需要先创建父目录并再次调用 mkdir。

有一种更快的方法可以实现这一点; 你可以使用 -p 标志与 mkdir 命令。

mkdir -p parent_dir/child_dir/nested_child_dir

使用 -p 标志会让 mkdir 知道如果父目录还不存在就创建一个父目录是可以的,然后创建一个嵌套的子目录。

mkdir 语法

在类 UNIX 系统中创建目录的方法是使用 mkdir 命令。

下面是 mkdir 的语法:

mkdir [OPTION] DIRECTORY

使用“-p”标志创建嵌套目录

就像一个 example,我想创建一个目录结构,其中父目录的名称是“歌曲”,子目录的名称是“艺术家”。

实现此目的的典型方法是通过以下命令集:

$ mkdir -v songs
mkdir: created directory 'songs'

$ mkdir -v songs/artists
mkdir: created directory 'songs/artists'

# I only included the '-v' flag for verbosity, you need not use it

这可以在一行中实现,如下所示:

$ mkdir -p -v songs/artists
mkdir: created directory 'songs'
mkdir: created directory 'songs/artists'

但是……你说,“不可能。” 从技术上讲,如果父目录不存在,则不能创建子目录。 是的,这仍然成立。

所以,让我们了解这里发生了什么。

mkdir 命令有一个“-p”标志,它的描述符是“如果存在则没有错误,根据需要创建父目录”。 该声明的第二部分说 mkdir 将在需要时创建一个父目录。

如果您在第二个中查看 mkdir 的输出 example,您会注意到 mkdir 先创建了 ‘songs’ 目录,然后在 ‘songs’ 目录下创建了 ‘artists’。

这表明如果您使用“-p”标志,mkdir 将首先创建必要的父目录,然后是子目录。

在尚不存在的父目录下创建多个子目录

让我们尝试在父目录不存在的情况下创建多个子目录。

有两种方法可以实现这一点。 看一看:

$ mkdir -vp songs/artists songs/albums songs/genres songs/genres/classical songs/genres/pop
mkdir: created directory 'songs'
mkdir: created directory 'songs/artists'
mkdir: created directory 'songs/albums'
mkdir: created directory 'songs/genres'
mkdir: created directory 'songs/genres/classical'
mkdir: created directory 'songs/genres/pop'

或者,您可以使用以下命令:

$ mkdir -vp songs/{artists,albums,genres/{classical,pop}}
mkdir: created directory 'songs'
mkdir: created directory 'songs/artists'
mkdir: created directory 'songs/albums'
mkdir: created directory 'songs/genres'
mkdir: created directory 'songs/genres/classical'
mkdir: created directory 'songs/genres/pop'

如您所见,两个命令具有相同的输出,但后一个命令的输入速度更快。

‘{}’ 大括号用于指定一个列表,在本例中为目录名称列表。

在这个 example,父目录’songs’不存在,所以它被创建了。 然后,创建子目录“艺术家”、“专辑”和“流派”。 ‘classical’ 和 ‘pop’ 目录列在 Genres 下,所以这两个是 ‘genres’ 的子目录,它们是按照我的预期创建的。

结论

您可以在下面的文章中了解有关 mkdir 命令的更多信息。

所以,现在您知道了如何在父目录不存在时创建子目录 – 而无需手动创建每个目录。