bash 列出文件夹中的所有子目录,将它们写入数组以在菜单中使用

arrays

1个回答

写回答

sunsong

2025-07-09 20:23

+ 关注

屏幕
屏幕

# 使用Bash列出文件夹中所有子目录并写入数组

在Bash中,要列出一个文件夹中的所有子目录并将它们存储在一个数组中,我们可以使用一些简单而强大的命令。这在构建菜单系统或者进行批量操作时特别有用。在本文中,我们将介绍如何实现这一目标,并提供一些例子来帮助理解。

## 列出子目录的基本命令

首先,我们使用find命令来列出目标文件夹中的所有子目录。-type d选项告诉find只显示目录,而不包括文件。然后,我们使用-exec选项来执行一个命令,这个命令是echo {},它会输出找到的每个目录的路径。

bash

directories=($(find /path/to/target/folder -type d -exec echo {} %%;))

以上命令将目录列表输出到屏幕上,但我们需要将它们存储在一个数组中,以便稍后在脚本中使用。

## 将目录存储到数组

为了将目录存储到数组中,我们使用mapfile命令(或readarray,它是mapfile的别名)。这个命令从标准输入中读取行,并将它们存储到数组中。因此,我们可以将find命令的输出通过管道传递给mapfile。

bash

mapfile -t directories < <(find /path/to/target/folder -type d -exec echo {} %%;)</p>

现在,directories数组包含了所有子目录的路径。

## 在菜单中使用数组

有了这个数组,我们可以在脚本中轻松地使用它们,例如创建一个简单的菜单。以下是一个示例脚本,它使用select命令生成一个菜单,用户可以选择要执行的操作。

bash

#!/bin/bash

mapfile -t directories < <(find /path/to/target/folder -type d -exec echo {} %%;)</p>PS3="请选择一个目录: "

select directory in "${directories[@]}"; do

if [ -n "$directory" ]; then

echo "你选择了目录:$directory"

# 在这里执行你的操作,例如进入选定的目录

break

else

echo "无效的选择,请重新选择。"

fi

done

在这个例子中,select命令用于生成一个菜单,其中包含所有找到的子目录。用户可以通过键入相应的数字来选择目录,然后脚本将显示所选目录的路径。

##

通过使用Bash命令,我们可以轻松地列出一个文件夹中的所有子目录,并将它们存储在一个数组中。这为构建菜单系统或进行批量操作提供了方便。通过上述示例代码,你可以在自己的脚本中使用这些技术,并根据需要进行定制。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号